<!DOCTYPE html>
<html lang="en">
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Apple macOS version 5.6.0" />
<title></title>
<meta charset="utf-8" />
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="stylesheet" type="text/css" href="main.css" />
<meta name="src" content="main.tex" />
<link rel="stylesheet" type="text/css" href="../css/custom.css" />
</head>
<body>
<nav class="sidenav"><!--l. 30-->
<p class="indent"></p>
<h2 class="likechapterHead"><a href="#x1-1000" id="x1-1000">Inhalt</a></h2>
<div class="tableofcontents"><span class="chapterToc">1 <a href="#x1-20001" id="QQ2-1-2">Introduction</a></span><br /> <span class="sectionToc">1.1 <a href="#x1-30001.1" id="QQ2-1-3">Terminologies</a></span><br /> <span class="sectionToc">1.2 <a href="#x1-40001.2" id="QQ2-1-4">Supported Versions</a></span><br /> <span class="sectionToc">1.3 <a href="#x1-50001.3" id="QQ2-1-5">Official Sources</a></span><br /> <span class="subsectionToc">1.3.1 <a href="#x1-60001.3.1" id="QQ2-1-6">Binary Distribution Sources</a></span><br /> <span class="subsectionToc">1.3.2 <a href="#x1-70001.3.2" id="QQ2-1-7">Links to Source Code</a></span><br /> <span class="subsectionToc">1.3.3 <a href="#x1-80001.3.3" id="QQ2-1-8">Translations</a></span><br /> <span class="sectionToc">1.4 <a href="#x1-90001.4" id="QQ2-1-9">Contributing</a></span><br /> <span class="subsectionToc">1.4.1 <a href="#x1-100001.4.1" id="QQ2-1-10">Build Instructions</a></span><br /> <span class="subsectionToc">1.4.2 <a href="#x1-110001.4.2" id="QQ2-1-11">Submitting patches</a></span><br /> <span class="sectionToc">1.5 <a href="#x1-120001.5" id="QQ2-1-12">Donation & Funding</a></span><br /> <span class="sectionToc">1.6 <a href="#x1-130001.6" id="QQ2-1-13">Contact</a></span><br /> <span class="chapterToc">2 <a href="#x1-140002" id="QQ2-1-14">Pages</a></span><br /> <span class="sectionToc">2.1 <a href="#x1-150002.1" id="QQ2-1-15">Main Page</a></span><br /> <span class="subsectionToc">2.1.1 <a href="#x1-160002.1.1" id="QQ2-1-16">Batch Operations</a></span><br /> <span class="subsectionToc">2.1.2 <a href="#x1-170002.1.2" id="QQ2-1-17">Colour Codes</a></span><br /> <span class="subsectionToc">2.1.3 <a href="#x1-180002.1.3" id="QQ2-1-18">Application Types</a></span><br /> <span class="subsectionToc">2.1.4 <a href="#x1-190002.1.4" id="QQ2-1-19">Version Info</a></span><br /> <span class="subsectionToc">2.1.5 <a href="#x1-200002.1.5" id="QQ2-1-20">Options Menu</a></span><br /> <span class="subsubsectionToc">2.1.5.1 <a href="#x1-210002.1.5.1" id="QQ2-1-21">Instructions</a></span><br /> <span class="subsubsectionToc">2.1.5.2 <a href="#x1-220002.1.5.2" id="QQ2-1-22">List Options</a></span><br /> <span class="subsubsectionToc">2.1.5.3 <a href="#x1-250002.1.5.3" id="QQ2-1-25">1-Click Ops</a></span><br /> <span class="subsubsectionToc">2.1.5.4 <a href="#x1-260002.1.5.4" id="QQ2-1-26">App Usage</a></span><br /> <span class="subsubsectionToc">2.1.5.5 <a href="#x1-270002.1.5.5" id="QQ2-1-27">System Config</a></span><br /> <span class="subsubsectionToc">2.1.5.6 <a href="#x1-280002.1.5.6" id="QQ2-1-28">Running Apps</a></span><br /> <span class="subsubsectionToc">2.1.5.7 <a href="#x1-290002.1.5.7" id="QQ2-1-29">APK Updater</a></span><br /> <span class="subsubsectionToc">2.1.5.8 <a href="#x1-300002.1.5.8" id="QQ2-1-30">Profiles</a></span><br /> <span class="subsubsectionToc">2.1.5.9 <a href="#x1-310002.1.5.9" id="QQ2-1-31">Log Viewer</a></span><br /> <span class="subsubsectionToc">2.1.5.10 <a href="#x1-320002.1.5.10" id="QQ2-1-32">Termux</a></span><br /> <span class="subsubsectionToc">2.1.5.11 <a href="#x1-330002.1.5.11" id="QQ2-1-33">Settings</a></span><br /> <span class="sectionToc">2.2 <a href="#x1-340002.2" id="QQ2-1-34">App Details Page</a></span><br /> <span class="subsectionToc">2.2.1 <a href="#x1-350002.2.1" id="QQ2-1-35">Colour Codes</a></span><br /> <span class="subsectionToc">2.2.2 <a href="#x1-360002.2.2" id="QQ2-1-36">App Info Tab</a></span><br /> <span class="subsubsectionToc">2.2.2.1 <a href="#x1-370002.2.2.1" id="QQ2-1-37">General Information</a></span><br /> <span class="subsubsectionToc">2.2.2.2 <a href="#x1-380002.2.2.2" id="QQ2-1-38">Horizontal Action Panel</a></span><br /> <span class="subsubsectionToc">2.2.2.3 <a href="#x1-390002.2.2.3" id="QQ2-1-39">Options Menu</a></span><br /> <span class="subsubsectionToc">2.2.2.4 <a href="#x1-400002.2.2.4" id="QQ2-1-40">Termux</a></span><br /> <span class="subsectionToc">2.2.3 <a href="#x1-410002.2.3" id="QQ2-1-41">Component Tabs</a></span><br /> <span class="subsubsectionToc">2.2.3.1 <a href="#x1-420002.2.3.1" id="QQ2-1-42">Activities</a></span><br /> <span class="subsubsectionToc">2.2.3.2 <a href="#x1-430002.2.3.2" id="QQ2-1-43">Services</a></span><br /> <span class="subsubsectionToc">2.2.3.3 <a href="#x1-440002.2.3.3" id="QQ2-1-44">Receivers</a></span><br /> <span class="subsubsectionToc">2.2.3.4 <a href="#x1-450002.2.3.4" id="QQ2-1-45">Providers</a></span><br /> <span class="subsubsectionToc">2.2.3.5 <a href="#x1-460002.2.3.5" id="QQ2-1-46">Additional Features for Rooted Phones</a></span><br /> <span class="subsectionToc">2.2.4 <a href="#x1-490002.2.4" id="QQ2-1-49">Permission Tabs</a></span><br /> <span class="subsubsectionToc">2.2.4.1 <a href="#x1-500002.2.4.1" id="QQ2-1-50">App Ops</a></span><br /> <span class="subsubsectionToc">2.2.4.2 <a href="#x1-510002.2.4.2" id="QQ2-1-51">Uses Permissions</a></span><br /> <span class="subsubsectionToc">2.2.4.3 <a href="#x1-520002.2.4.3" id="QQ2-1-52">Permissions</a></span><br /> <span class="subsectionToc">2.2.5 <a href="#x1-530002.2.5" id="QQ2-1-53">Signatures Tab</a></span><br /> <span class="subsectionToc">2.2.6 <a href="#x1-540002.2.6" id="QQ2-1-54">Other Tabs</a></span><br /> <span class="sectionToc">2.3 <a href="#x1-550002.3" id="QQ2-1-55">1-Click Ops Page</a></span><br /> <span class="subsectionToc">2.3.1 <a href="#x1-560002.3.1" id="QQ2-1-56">Block/Unblock Trackers</a></span><br /> <span class="subsectionToc">2.3.2 <a href="#x1-570002.3.2" id="QQ2-1-57">Block Components…</a></span><br /> <span class="subsectionToc">2.3.3 <a href="#x1-580002.3.3" id="QQ2-1-58">Set Mode for App Ops…</a></span><br /> <span class="subsectionToc">2.3.4 <a href="#x1-590002.3.4" id="QQ2-1-59">Back up</a></span><br /> <span class="subsectionToc">2.3.5 <a href="#x1-650002.3.5" id="QQ2-1-65">Restore</a></span><br /> <span class="sectionToc">2.4 <a href="#x1-690002.4" id="QQ2-1-69">Profiles Page</a></span><br /> <span class="subsectionToc">2.4.1 <a href="#x1-700002.4.1" id="QQ2-1-70">Options Menu</a></span><br /> <span class="sectionToc">2.5 <a href="#x1-710002.5" id="QQ2-1-71">Profile Page</a></span><br /> <span class="subsectionToc">2.5.1 <a href="#x1-720002.5.1" id="QQ2-1-72">Options Menu</a></span><br /> <span class="subsectionToc">2.5.2 <a href="#x1-730002.5.2" id="QQ2-1-73">Apps Tab</a></span><br /> <span class="subsectionToc">2.5.3 <a href="#x1-740002.5.3" id="QQ2-1-74">Configurations Tab</a></span><br /> <span class="subsubsectionToc">2.5.3.1 <a href="#x1-750002.5.3.1" id="QQ2-1-75">Comment</a></span><br /> <span class="subsubsectionToc">2.5.3.2 <a href="#x1-760002.5.3.2" id="QQ2-1-76">State</a></span><br /> <span class="subsubsectionToc">2.5.3.3 <a href="#x1-770002.5.3.3" id="QQ2-1-77">Users</a></span><br /> <span class="subsubsectionToc">2.5.3.4 <a href="#x1-780002.5.3.4" id="QQ2-1-78">Components</a></span><br /> <span class="subsubsectionToc">2.5.3.5 <a href="#x1-790002.5.3.5" id="QQ2-1-79">App Ops</a></span><br /> <span class="subsubsectionToc">2.5.3.6 <a href="#x1-800002.5.3.6" id="QQ2-1-80">Permissions</a></span><br /> <span class="subsubsectionToc">2.5.3.7 <a href="#x1-810002.5.3.7" id="QQ2-1-81">Backup/Restore</a></span><br /> <span class="subsubsectionToc">2.5.3.8 <a href="#x1-820002.5.3.8" id="QQ2-1-82">Export Blocking Rules</a></span><br /> <span class="subsubsectionToc">2.5.3.9 <a href="#x1-830002.5.3.9" id="QQ2-1-83">Disable</a></span><br /> <span class="subsubsectionToc">2.5.3.10 <a href="#x1-840002.5.3.10" id="QQ2-1-84">Force-stop</a></span><br /> <span class="subsubsectionToc">2.5.3.11 <a href="#x1-850002.5.3.11" id="QQ2-1-85">Clear Cache</a></span><br /> <span class="subsubsectionToc">2.5.3.12 <a href="#x1-860002.5.3.12" id="QQ2-1-86">Clear Data</a></span><br /> <span class="subsubsectionToc">2.5.3.13 <a href="#x1-870002.5.3.13" id="QQ2-1-87">Block Trackers</a></span><br /> <span class="subsubsectionToc">2.5.3.14 <a href="#x1-880002.5.3.14" id="QQ2-1-88">Save APK</a></span><br /> <span class="sectionToc">2.6 <a href="#x1-890002.6" id="QQ2-1-89">Settings Page</a></span><br /> <span class="subsectionToc">2.6.1 <a href="#x1-900002.6.1" id="QQ2-1-90">Language</a></span><br /> <span class="subsectionToc">2.6.2 <a href="#x1-910002.6.2" id="QQ2-1-91">App Theme</a></span><br /> <span class="subsectionToc">2.6.3 <a href="#x1-920002.6.3" id="QQ2-1-92">Screen Lock</a></span><br /> <span class="subsectionToc">2.6.4 <a href="#x1-930002.6.4" id="QQ2-1-93">Mode of Operation</a></span><br /> <span class="subsectionToc">2.6.5 <a href="#x1-940002.6.5" id="QQ2-1-94">Enable/Disable Features</a></span><br /> <span class="subsectionToc">2.6.6 <a href="#x1-950002.6.6" id="QQ2-1-95">APK Signing</a></span><br /> <span class="subsubsectionToc">2.6.6.1 <a href="#x1-960002.6.6.1" id="QQ2-1-96">Signature Schemes</a></span><br /> <span class="subsubsectionToc">2.6.6.2 <a href="#x1-970002.6.6.2" id="QQ2-1-97">Signing Key</a></span><br /> <span class="subsectionToc">2.6.7 <a href="#x1-980002.6.7" id="QQ2-1-98">Installer</a></span><br /> <span class="subsubsectionToc">2.6.7.1 <a href="#x1-990002.6.7.1" id="QQ2-1-99">Show users in installer</a></span><br /> <span class="subsubsectionToc">2.6.7.2 <a href="#x1-1000002.6.7.2" id="QQ2-1-100">Sign APK</a></span><br /> <span class="subsubsectionToc">2.6.7.3 <a href="#x1-1010002.6.7.3" id="QQ2-1-101">Install location</a></span><br /> <span class="subsubsectionToc">2.6.7.4 <a href="#x1-1020002.6.7.4" id="QQ2-1-102">Installer App</a></span><br /> <span class="subsectionToc">2.6.8 <a href="#x1-1030002.6.8" id="QQ2-1-103">Back up/Restore</a></span><br /> <span class="subsubsectionToc">2.6.8.1 <a href="#x1-1040002.6.8.1" id="QQ2-1-104">Compression method</a></span><br /> <span class="subsubsectionToc">2.6.8.2 <a href="#x1-1050002.6.8.2" id="QQ2-1-105">Backup Options</a></span><br /> <span class="subsubsectionToc">2.6.8.3 <a href="#x1-1060002.6.8.3" id="QQ2-1-106">Backup apps with Android KeyStore</a></span><br /> <span class="subsubsectionToc">2.6.8.4 <a href="#x1-1070002.6.8.4" id="QQ2-1-107">Encryption</a></span><br /> <span class="subsubsectionToc">2.6.8.5 <a href="#x1-1080002.6.8.5" id="QQ2-1-108">Backup Volume</a></span><br /> <span class="subsectionToc">2.6.9 <a href="#x1-1090002.6.9" id="QQ2-1-109">Rules</a></span><br /> <span class="subsubsectionToc">2.6.9.1 <a href="#x1-1100002.6.9.1" id="QQ2-1-110">Instant Component Blocking</a></span><br /> <span class="subsubsectionToc">2.6.9.2 <a href="#x1-1110002.6.9.2" id="QQ2-1-111">Import/Export Blocking Rules</a></span><br /> <span class="subsubsectionToc">2.6.9.3 <a href="#x1-1170002.6.9.3" id="QQ2-1-117">Remove all rules</a></span><br /> <span class="subsectionToc">2.6.10 <a href="#x1-1180002.6.10" id="QQ2-1-118">Import/Export Keystore</a></span><br /> <span class="subsectionToc">2.6.11 <a href="#x1-1190002.6.11" id="QQ2-1-119">About the device</a></span><br /> <span class="sectionToc">2.7 <a href="#x1-1200002.7" id="QQ2-1-120">Scanner Page</a></span><br /> <span class="subsectionToc">2.7.1 <a href="#x1-1210002.7.1" id="QQ2-1-121">Missing Signatures</a></span><br /> <span class="sectionToc">2.8 <a href="#x1-1220002.8" id="QQ2-1-122">Interceptor Page</a></span><br /> <span class="subsectionToc">2.8.1 <a href="#x1-1230002.8.1" id="QQ2-1-123">Intent Filters</a></span><br /> <span class="subsubsectionToc">2.8.1.1 <a href="#x1-1240002.8.1.1" id="QQ2-1-124">Action</a></span><br /> <span class="subsubsectionToc">2.8.1.2 <a href="#x1-1250002.8.1.2" id="QQ2-1-125">Data</a></span><br /> <span class="subsubsectionToc">2.8.1.3 <a href="#x1-1260002.8.1.3" id="QQ2-1-126">MIME Type</a></span><br /> <span class="subsubsectionToc">2.8.1.4 <a href="#x1-1270002.8.1.4" id="QQ2-1-127">Categories</a></span><br /> <span class="subsubsectionToc">2.8.1.5 <a href="#x1-1280002.8.1.5" id="QQ2-1-128">Flags</a></span><br /> <span class="subsubsectionToc">2.8.1.6 <a href="#x1-1290002.8.1.6" id="QQ2-1-129">Extras</a></span><br /> <span class="subsubsectionToc">2.8.1.7 <a href="#x1-1300002.8.1.7" id="QQ2-1-130">URI</a></span><br /> <span class="subsectionToc">2.8.2 <a href="#x1-1310002.8.2" id="QQ2-1-131">Matching Activities</a></span><br /> <span class="subsectionToc">2.8.3 <a href="#x1-1320002.8.3" id="QQ2-1-132">Reset to Default</a></span><br /> <span class="subsectionToc">2.8.4 <a href="#x1-1330002.8.4" id="QQ2-1-133">Send Edited Intent</a></span><br /> <span class="sectionToc">2.9 <a href="#x1-1340002.9" id="QQ2-1-134">Shared Preferences Editor Page</a></span><br /> <span class="chapterToc">3 <a href="#x1-1350003" id="QQ2-1-135">Guides</a></span><br /> <span class="sectionToc">3.1 <a href="#x1-1360003.1" id="QQ2-1-136">ADB over TCP</a></span><br /> <span class="subsectionToc">3.1.1 <a href="#x1-1370003.1.1" id="QQ2-1-137">Enable developer options</a></span><br /> <span class="subsubsectionToc">3.1.1.1 <a href="#x1-1380003.1.1.1" id="QQ2-1-138">Location of developer options</a></span><br /> <span class="subsubsectionToc">3.1.1.2 <a href="#x1-1390003.1.1.2" id="QQ2-1-139">How to enable developer options</a></span><br /> <span class="subsectionToc">3.1.2 <a href="#x1-1400003.1.2" id="QQ2-1-140">Enable USB debugging</a></span><br /> <span class="subsubsectionToc">3.1.2.1 <a href="#x1-1410003.1.2.1" id="QQ2-1-141">Xiaomi (MIUI)</a></span><br /> <span class="subsubsectionToc">3.1.2.2 <a href="#x1-1420003.1.2.2" id="QQ2-1-142">Huawei (EMUI)</a></span><br /> <span class="subsubsectionToc">3.1.2.3 <a href="#x1-1430003.1.2.3" id="QQ2-1-143">LG</a></span><br /> <span class="subsubsectionToc">3.1.2.4 <a href="#x1-1440003.1.2.4" id="QQ2-1-144">Troubleshooting</a></span><br /> <span class="subsectionToc">3.1.3 <a href="#x1-1450003.1.3" id="QQ2-1-145">Setup ADB on PC or Mac</a></span><br /> <span class="subsubsectionToc">3.1.3.1 <a href="#x1-1460003.1.3.1" id="QQ2-1-146">Windows</a></span><br /> <span class="subsubsectionToc">3.1.3.2 <a href="#x1-1470003.1.3.2" id="QQ2-1-147">macOS</a></span><br /> <span class="subsubsectionToc">3.1.3.3 <a href="#x1-1480003.1.3.3" id="QQ2-1-148">Linux</a></span><br /> <span class="subsectionToc">3.1.4 <a href="#x1-1490003.1.4" id="QQ2-1-149">Configure ADB over TCP</a></span><br /> <span class="subsubsectionToc">3.1.4.1 <a href="#x1-1500003.1.4.1" id="QQ2-1-150">Lineage OS</a></span><br /> <span class="subsubsectionToc">3.1.4.2 <a href="#x1-1510003.1.4.2" id="QQ2-1-151">Enable ADB over TCP via PC or Mac</a></span><br /> <span class="subsubsectionToc">3.1.4.3 <a href="#x1-1520003.1.4.3" id="QQ2-1-152">Enable ADB mode on App Manager</a></span><br /> <span class="subsubsectionToc">3.1.4.4 <a href="#x1-1530003.1.4.4" id="QQ2-1-153">Stop ADB over TCP</a></span><br /> <span class="subsectionToc">3.1.5 <a href="#x1-1540003.1.5" id="QQ2-1-154">References</a></span><br /> <span class="sectionToc">3.2 <a href="#x1-1550003.2" id="QQ2-1-155">Back up/Restore</a></span><br /> <span class="subsectionToc">3.2.1 <a href="#x1-1560003.2.1" id="QQ2-1-156">Location</a></span><br /> <span class="subsectionToc">3.2.2 <a href="#x1-1570003.2.2" id="QQ2-1-157">Backup Options</a></span><br /> <span class="subsectionToc">3.2.3 <a href="#x1-1580003.2.3" id="QQ2-1-158">Backup</a></span><br /> <span class="subsectionToc">3.2.4 <a href="#x1-1590003.2.4" id="QQ2-1-159">Restore</a></span><br /> <span class="subsectionToc">3.2.5 <a href="#x1-1600003.2.5" id="QQ2-1-160">Delete Backup</a></span><br /> <span class="chapterToc">4 <a href="#x1-1610004" id="QQ2-1-161">Frequently Asked Questions</a></span><br /> <span class="sectionToc">4.1 <a href="#x1-1620004.1" id="QQ2-1-162">App Components</a></span><br /> <span class="subsectionToc">4.1.1 <a href="#x1-1630004.1.1" id="QQ2-1-163">What are the app components?</a></span><br /> <span class="subsectionToc">4.1.2 <a href="#x1-1640004.1.2" id="QQ2-1-164">How are the tracker or other components blocked in AM? What are its limitations?</a></span><br /> <span class="subsectionToc">4.1.3 <a href="#x1-1650004.1.3" id="QQ2-1-165">Why are the components blocked by AM not detected by other related apps?</a></span><br /> <span class="subsectionToc">4.1.4 <a href="#x1-1660004.1.4" id="QQ2-1-166">Does app components blocked by other tools retained in AM?</a></span><br /> <span class="subsectionToc">4.1.5 <a href="#x1-1670004.1.5" id="QQ2-1-167">What happened to the components blocked by AM which are also blocked by other tools?</a></span><br /> <span class="subsectionToc">4.1.6 <a href="#x1-1680004.1.6" id="QQ2-1-168">What is instant component blocking?</a></span><br /> <span class="subsectionToc">4.1.7 <a href="#x1-1690004.1.7" id="QQ2-1-169">Tracker classes versus tracker components</a></span><br /> <span class="subsectionToc">4.1.8 <a href="#x1-1700004.1.8" id="QQ2-1-170">How to unblock the tracker components blocked using 1-Click Ops or Batch Ops?</a></span><br /> <span class="sectionToc">4.2 <a href="#x1-1710004.2" id="QQ2-1-171">ADB over TCP</a></span><br /> <span class="subsectionToc">4.2.1 <a href="#x1-1720004.2.1" id="QQ2-1-172">Do I have to enable ADB over TCP everytime I restart?</a></span><br /> <span class="subsectionToc">4.2.2 <a href="#x1-1730004.2.2" id="QQ2-1-173">Cannot enable USB debugging. What to do?</a></span><br /> <span class="subsectionToc">4.2.3 <a href="#x1-1740004.2.3" id="QQ2-1-174">Can I block tracker or any other application components using ADB over TCP?</a></span><br /> <span class="subsectionToc">4.2.4 <a href="#x1-1750004.2.4" id="QQ2-1-175">Which features can be used in ADB mode?</a></span><br /> <span class="sectionToc">4.3 <a href="#x1-1760004.3" id="QQ2-1-176">Miscellanea</a></span><br /> <span class="subsectionToc">4.3.1 <a href="#x1-1770004.3.1" id="QQ2-1-177">I don’t use root/ADB. Am I completely safe from any harms?</a></span><br /> <span class="subsectionToc">4.3.2 <a href="#x1-1780004.3.2" id="QQ2-1-178">Why does AM have the INTERNET permission when it doesn’t connect to the Internet?</a></span><br /> <span class="subsectionToc">4.3.3 <a href="#x1-1790004.3.3" id="QQ2-1-179">How are the trackers and libraries are updated?</a></span><br /> <span class="subsectionToc">4.3.4 <a href="#x1-1800004.3.4" id="QQ2-1-180">Any plans for Shizuku?</a></span><br /> <span class="subsectionToc">4.3.5 <a href="#x1-1810004.3.5" id="QQ2-1-181">What are bloatware and how to remove them?</a></span><br /> <span class="appendixToc">A <a href="#x1-182000A" id="QQ2-1-182">Specifications</a></span><br /> <span class="sectionToc">A.1 <a href="#x1-183000A.1" id="QQ2-1-183">Rules Specification</a></span><br /> <span class="subsectionToc">A.1.1 <a href="#x1-184000A.1.1" id="QQ2-1-184">Background</a></span><br /> <span class="subsectionToc">A.1.2 <a href="#x1-185000A.1.2" id="QQ2-1-185">Rules File Format</a></span><br /> <span class="subsubsectionToc">A.1.2.1 <a href="#x1-186000A.1.2.1" id="QQ2-1-186">Internal</a></span><br /> <span class="subsubsectionToc">A.1.2.2 <a href="#x1-187000A.1.2.2" id="QQ2-1-187">External</a></span><br /> <span class="appendixToc">B <a href="#x1-188000B" id="QQ2-1-188">Changelogs</a></span><br /> <span class="sectionToc">B.1 <a href="#x1-189000B.1" id="QQ2-1-189">v2.6.0 (385)</a></span><br /> <span class="subsectionToc">B.1.1 <a href="#x1-190000B.1.1" id="QQ2-1-190">Introducing Backups</a></span><br /> <span class="subsectionToc">B.1.2 <a href="#x1-191000B.1.2" id="QQ2-1-191">Introducing Log Viewer</a></span><br /> <span class="subsectionToc">B.1.3 <a href="#x1-192000B.1.3" id="QQ2-1-192">Lock App Manager</a></span><br /> <span class="subsectionToc">B.1.4 <a href="#x1-193000B.1.4" id="QQ2-1-193">Extended Modes for App Ops</a></span><br /> <span class="subsectionToc">B.1.5 <a href="#x1-194000B.1.5" id="QQ2-1-194">New Batch Ops: Add to Profile</a></span><br /> <span class="subsectionToc">B.1.6 <a href="#x1-195000B.1.6" id="QQ2-1-195">App Info: Improved</a></span><br /> <span class="subsectionToc">B.1.7 <a href="#x1-196000B.1.7" id="QQ2-1-196">Advanced Sort and Filtering Options in the Main Page</a></span><br /> <span class="subsectionToc">B.1.8 <a href="#x1-197000B.1.8" id="QQ2-1-197">About This Device</a></span><br /> <span class="subsectionToc">B.1.9 <a href="#x1-198000B.1.9" id="QQ2-1-198">Enable/disable Features</a></span><br /> <span class="subsectionToc">B.1.10 <a href="#x1-199000B.1.10" id="QQ2-1-199">New Languages</a></span><br /> <span class="subsectionToc">B.1.11 <a href="#x1-200000B.1.11" id="QQ2-1-200">Signing the APK Files</a></span><br /> <span class="subsectionToc">B.1.12 <a href="#x1-201000B.1.12" id="QQ2-1-201">New Extension: UnAPKM</a></span><br /> <span class="sectionToc">B.2 <a href="#x1-202000B.2" id="QQ2-1-202">v2.5.20 (375)</a></span><br /> <span class="subsectionToc">B.2.1 <a href="#x1-203000B.2.1" id="QQ2-1-203">Introducing Profiles</a></span><br /> <span class="subsectionToc">B.2.2 <a href="#x1-205000B.2.2" id="QQ2-1-205">The Interceptor</a></span><br /> <span class="subsectionToc">B.2.3 <a href="#x1-207000B.2.3" id="QQ2-1-207">UnAPKM: DeDRM the APKM files</a></span><br /> <span class="subsectionToc">B.2.4 <a href="#x1-208000B.2.4" id="QQ2-1-208">Multiple user</a></span><br /> <span class="subsectionToc">B.2.5 <a href="#x1-209000B.2.5" id="QQ2-1-209">Vive la France!</a></span><br /> <span class="subsectionToc">B.2.6 <a href="#x1-210000B.2.6" id="QQ2-1-210">Report crashes</a></span><br /> <span class="subsectionToc">B.2.7 <a href="#x1-211000B.2.7" id="QQ2-1-211">Android 11</a></span><br /> <span class="subsectionToc">B.2.8 <a href="#x1-212000B.2.8" id="QQ2-1-212">App Installer Improvements</a></span><br /> <span class="subsubsectionToc">B.2.8.1 <a href="#x1-213000B.2.8.1" id="QQ2-1-213">Set installation locations</a></span><br /> <span class="subsubsectionToc">B.2.8.2 <a href="#x1-214000B.2.8.2" id="QQ2-1-214">Set APK installer</a></span><br /> <span class="subsubsectionToc">B.2.8.3 <a href="#x1-215000B.2.8.3" id="QQ2-1-215">Multiple users</a></span><br /> <span class="subsubsectionToc">B.2.8.4 <a href="#x1-216000B.2.8.4" id="QQ2-1-216">Signing APK files</a></span><br /> <span class="sectionToc">B.3 <a href="#x1-218000B.3" id="QQ2-1-218">v2.5.17 (368)</a></span><br /> <span class="subsectionToc">B.3.1 <a href="#x1-219000B.3.1" id="QQ2-1-219">App Installer</a></span><br /> <span class="subsectionToc">B.3.2 <a href="#x1-221000B.3.2" id="QQ2-1-221">Scanner: Replacement for Exodus Page</a></span><br /> <span class="subsectionToc">B.3.3 <a href="#x1-222000B.3.3" id="QQ2-1-222">Introducing System Config</a></span><br /> <span class="subsectionToc">B.3.4 <a href="#x1-223000B.3.4" id="QQ2-1-223">More Languages</a></span><br /> <span class="subsectionToc">B.3.5 <a href="#x1-224000B.3.5" id="QQ2-1-224">App Info Tab</a></span><br /> <span class="subsectionToc">B.3.6 <a href="#x1-225000B.3.6" id="QQ2-1-225">Navigation Improvements</a></span><br /> <span class="subsectionToc">B.3.7 <a href="#x1-226000B.3.7" id="QQ2-1-226">Running Apps Page</a></span><br /> <span class="subsectionToc">B.3.8 <a href="#x1-227000B.3.8" id="QQ2-1-227">Built-in Toybox</a></span><br /> <span class="subsectionToc">B.3.9 <a href="#x1-228000B.3.9" id="QQ2-1-228">Component Blocker Improvements</a></span><br /> <span class="subsectionToc">B.3.10 <a href="#x1-229000B.3.10" id="QQ2-1-229">Improvements in the App Details Page</a></span><br /> <span class="subsectionToc">B.3.11 <a href="#x1-230000B.3.11" id="QQ2-1-230">App Manifest</a></span><br /> <span class="sectionToc">B.4 <a href="#x1-231000B.4" id="QQ2-1-231">v2.5.13 (348)</a></span><br /> <span class="subsectionToc">B.4.1 <a href="#x1-232000B.4.1" id="QQ2-1-232">Bundled App (Split APK)</a></span><br /> <span class="subsectionToc">B.4.2 <a href="#x1-234000B.4.2" id="QQ2-1-234">Direct Install Support</a></span><br /> <span class="subsectionToc">B.4.3 <a href="#x1-236000B.4.3" id="QQ2-1-236">Remove All Blocking Rules</a></span><br /> <span class="subsectionToc">B.4.4 <a href="#x1-237000B.4.4" id="QQ2-1-237">App Ops</a></span><br /> <span class="subsectionToc">B.4.5 <a href="#x1-239000B.4.5" id="QQ2-1-239">Enhanced ADB Support</a></span><br /> <span class="subsectionToc">B.4.6 <a href="#x1-241000B.4.6" id="QQ2-1-241">Filtering in Main Page</a></span><br /> <span class="subsectionToc">B.4.7 <a href="#x1-242000B.4.7" id="QQ2-1-242">Apk Backup/Sharing</a></span><br /> <span class="subsectionToc">B.4.8 <a href="#x1-243000B.4.8" id="QQ2-1-243">Batch Ops</a></span><br /> <span class="subsectionToc">B.4.9 <a href="#x1-244000B.4.9" id="QQ2-1-244">Translations</a></span><br /> <span class="subsectionToc">B.4.10 <a href="#x1-246000B.4.10" id="QQ2-1-246">App Data Backup</a></span><br /> <span class="appendixToc">C <a href="#x1-247000C" id="QQ2-1-247">App Ops</a></span><br /> <span class="sectionToc">C.1 <a href="#x1-248000C.1" id="QQ2-1-248">Background</a></span><br /> <span class="sectionToc">C.2 <a href="#x1-249000C.2" id="QQ2-1-249">Introduction to App Ops</a></span><br /> <span class="sectionToc">C.3 <a href="#x1-250000C.3" id="QQ2-1-251">AppOpsManager</a></span><br /> <span class="subsectionToc">C.3.1 <a href="#x1-251000C.3.1" id="QQ2-1-252"><span class="ectt-1000">OP_*</span> Constants</a></span><br /> <span class="subsectionToc">C.3.2 <a href="#x1-252000C.3.2" id="QQ2-1-254"><span class="ectt-1000">MODE_*</span> Constants</a></span><br /> <span class="subsectionToc">C.3.3 <a href="#x1-253000C.3.3" id="QQ2-1-255">PackageOps</a></span><br /> <span class="subsectionToc">C.3.4 <a href="#x1-254000C.3.4" id="QQ2-1-257">OpEntry</a></span><br /> <span class="subsectionToc">C.3.5 <a href="#x1-255000C.3.5" id="QQ2-1-259">Usage</a></span><br /> <span class="sectionToc">C.4 <a href="#x1-256000C.4" id="QQ2-1-260">AppOpsService</a></span><br /> <span class="sectionToc">C.5 <a href="#x1-257000C.5" id="QQ2-1-261">appops.xml</a></span><br /> <span class="sectionToc">C.6 <a href="#x1-258000C.6" id="QQ2-1-262">Command Line Interface</a></span></div>
</nav>
<main class="main">
<div class="center"><!--l. 5-->
<p class="noindent"><!--l. 6--></p>
<p class="noindent"><img src="../images/icon.png" alt="PIC" style="width:16.69%" /> <!--l. 7--></p>
<p class="noindent"><span class="pplbc8t-x-x-207">A<span class="small-caps">P</span><span class="small-caps">P</span> M<span class="small-caps">A</span><span class="small-caps">N</span><span class="small-caps">A</span><span class="small-caps">G</span><span class="small-caps">E</span><span class="small-caps">R</span></span> </p>
<p class="noindent"><span class="pplb8t-x-x-172">User Manual</span> </p>
<p class="noindent"><span class="pplri8t-x-x-120">v2.6.0</span> </p>
<p class="noindent"><span class="pplr8t-x-x-109">April 24, 2021</span> </p>
<p class="noindent">Copyright <span class="pplr8c-">©</span>2020–2021 Muntashir Al-Islam</p>
<div class="quotation"><!--l. 19-->
<p class="indent">“Wisely and slow. They stumble that run fast.” — Friar Laurence, <span class="pplri8t-">Romeo and Juliet</span></p>
</div>
</div>
<h2 class="chapterHead"><span class="titlemark">Chapter 1</span><br /> <a href="#QQ2-1-2" id="x1-20001">Introduction</a></h2>
<!--l. 3-->
<p class="noindent">App Manager is an advanced package manager for Android. It offers many features and consequently, it requires a user manual to assist its users with features that it offers. This document acts as a user manual for App Manager in the sense that it contains the description of every feature that App Manager has to offer. The document can be considered as the “official” guidelines for App Manager and represent the expected behaviour of App Manager. Translations can misinterpret this document (which is written in English). Therefore, it is recommended that you read the English version if possible. There might be other unofficial or third-party resources such as blog articles, videos, chat groups, etc. While these resources might be useful for many people, they may not be up-to-date. In case any deviations are detected in App Manager from this document, they should be reported in the <a href="https://github.com/MuntashirAkon/AppManager/issues">App Manager issue tracker</a>.</p>
<h3 class="sectionHead"><span class="titlemark">1.1</span> <a href="#QQ2-1-3" id="x1-30001.1">Terminologies</a></h3>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">AM</span> — Short name for App Manager</li>
<li class="itemize"><span class="pplb8t-">AoT</span> — Short form of ADB over TCP</li>
<li class="itemize"><span class="pplb8t-">Block/Unblock</span> — Used for component blocking. It denotes that a component is blocked using Intent Firewall and disabled using PackageManager.</li>
<li class="itemize"><span class="pplb8t-">IFW</span> — Short form of Intent Firewall.</li>
<li class="itemize"><span class="pplb8t-">Ops</span> — Short name for operations, e.g. app ops, batch ops, 1-click ops</li>
<li class="itemize"><span class="pplb8t-">SSAID</span> — Short form of <span class="ectt-1000">Settings.Secure.ANDROID_ID</span>. It is a device identifier assigned to each app (from Android Oreo and onwards). It is generated from the combination of the signing certificate of the app and the SSAID set for the package <span class="ectt-1000">android</span>. As a result, it is guaranteed to be the same for an app unless the user formats the device. It is widely used for tracking users.</li>
<li class="itemize"><span class="pplb8t-">Tracker</span> — Denotes tracker components throughout the document and in App Manager except the <a href="#x1-1200002.7">scanner page</a>. Trackers include libraries such as crash reporters, analytics, profiling, identification, ads, location, etc. Thus, they are not equal in functions. There is no distinction or bias between open source and closed source libraries.</li>
</ul>
<!--l. 32-->

<h3 class="sectionHead"><span class="titlemark">1.2</span> <a href="#QQ2-1-4" id="x1-40001.2">Supported Versions</a></h3>
<!--l. 33-->
<p class="noindent">Currently supported versions are v2.5.20 (stable), v2.5.23 (pre-release) and v2.5.24 (debug release). </p>

<h3 class="sectionHead"><span class="titlemark">1.3</span> <a href="#QQ2-1-5" id="x1-50001.3">Official Sources</a></h3>
<!--l. 37-->

<h4 class="subsectionHead"><span class="titlemark">1.3.1</span> <a href="#QQ2-1-6" id="x1-60001.3.1">Binary Distribution Sources</a></h4>
<!--l. 38-->
<p class="noindent">App Manager is distributed using the following sources. Unofficial sources may distribute modified versions of App Manager, and none but you shall be responsible for the consequences of using such distributions.</p>
<ol class="enumerate1">
<li class="enumerate" id="x1-6002x1">Official F-Droid repository.<a href="#Hfootnote./theHHfootnote"></a><a href="#fn1x1" id="fn1x1-bk"><sup class="textsuperscript">1</sup></a><a id="x1-6003f1"></a><br class="newline" /> <span class="pplri8t-">Link:</span> <a href="https://f-droid.org/packages/io.github.muntashirakon.AppManager" class="url"><span class="ectt-1000">https://f-droid.org/packages/io.github.muntashirakon.AppManager</span></a></li>
<li class="enumerate" id="x1-6005x2">IzzyOnDroid repository for F-Droid.<a href="#Hfootnote./theHHfootnote"></a><a href="#fn2x1" id="fn2x1-bk"><sup class="textsuperscript">2</sup></a><a id="x1-6006f2"></a><br class="newline" /> <span class="pplri8t-">Link:</span> <a href="https://apt.izzysoft.de/fdroid/index/apk/io.github.muntashirakon.AppManager" class="url"><span class="ectt-1000">https://apt.izzysoft.de/fdroid/index/apk/io.github.muntashirakon.AppManager</span></a></li>
<li class="enumerate" id="x1-6008x3">GitHub repository.<br class="newline" /> <span class="pplri8t-">Normal releases:</span> <a href="https://github.com/MuntashirAkon/AppManager/releases" class="url"><span class="ectt-1000">https://github.com/MuntashirAkon/AppManager/releases</span></a><br class="newline" /> <span class="pplri8t-">Debug releases:</span> <a href="https://github.com/MuntashirAkon/AppManager/actions" class="url"><span class="ectt-1000">https://github.com/MuntashirAkon/AppManager/actions</span></a></li>
<li class="enumerate" id="x1-6010x4">Telegram.<br class="newline" /> <span class="pplri8t-">Normal releases:</span> <a href="https://t.me/AppManagerChannel" class="url"><span class="ectt-1000">https://t.me/AppManagerChannel</span></a><br class="newline" /> <span class="pplri8t-">Debug releases:</span> <a href="https://t.me/AppManagerDebug" class="url"><span class="ectt-1000">https://t.me/AppManagerDebug</span></a></li>
</ol>
<!--l. 53-->

<h4 class="subsectionHead"><span class="titlemark">1.3.2</span> <a href="#QQ2-1-7" id="x1-70001.3.2">Links to Source Code</a></h4>
<!--l. 54-->
<p class="noindent">All but GitHub are the mirror links. The tags should always be up-to-date, but the master branch is not guaranteed to be up-to-date. If the target is to clone the master branch, use the GitHub link instead of the others.</p>
<ol class="enumerate1">
<li class="enumerate" id="x1-7002x1">GitHub: <a href="https://github.com/MuntashirAkon/AppManager" class="url"><span class="ectt-1000">https://github.com/MuntashirAkon/AppManager</span></a></li>
<li class="enumerate" id="x1-7004x2">GitLab: <a href="https://gitlab.com/muntashir/AppManager" class="url"><span class="ectt-1000">https://gitlab.com/muntashir/AppManager</span></a></li>
<li class="enumerate" id="x1-7006x3">Codeberg: <a href="https://codeberg.org/muntashir/AppManager" class="url"><span class="ectt-1000">https://codeberg.org/muntashir/AppManager</span></a></li>
<li class="enumerate" id="x1-7008x4">Riseup: <a href="https://0xacab.org/muntashir/AppManager" class="url"><span class="ectt-1000">https://0xacab.org/muntashir/AppManager</span></a></li>
</ol>
<!--l. 63-->

<h4 class="subsectionHead"><span class="titlemark">1.3.3</span> <a href="#QQ2-1-8" id="x1-80001.3.3">Translations</a></h4>
<!--l. 64-->
<p class="noindent">App Manager does not accept translations directly via pull/merge requests. Translations are managed both automatically and manually depending on the context.</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">Scanner.</span> Clicking on this button displays the app’s tracker and library information. At first, it scans the app to extract a list of classes. Then the class list is matched with a number of signatures. After that, a scan summary is displayed.<br class="newline" /> <span class="pplri8t-">See also:</span> <a href="#x1-1200002.7"><span class="pplri8t-">Scanner page</span></a></li>
<li class="itemize"><span class="pplb8t-">Databases.</span> Clicking on this button displays a list of databases used by the app. This needs more improvements, and a database editor which might be added in the future. This option is only visible to the root users.</li>
</ul>
<!--l. 73-->

<h3 class="sectionHead"><span class="titlemark">1.4</span> <a href="#QQ2-1-9" id="x1-90001.4">Contributing</a></h3>
<!--l. 74-->
<p class="noindent">There are multiple ways a user can contribute such as creating helpful issues, attending discussions, improving documentations and translations, adding unrecognised libraries or trackers, reviewing the source code as well as reporting security vulnerabilities. </p>

<h4 class="subsectionHead"><span class="titlemark">1.4.1</span> <a href="#QQ2-1-10" id="x1-100001.4.1">Build Instructions</a></h4>
<!--l. 79-->
<p class="noindent">Build instructions are available in the README file of the root directory of the source. </p>

<h4 class="subsectionHead"><span class="titlemark">1.4.2</span> <a href="#QQ2-1-11" id="x1-110001.4.2">Submitting patches</a></h4>
<!--l. 82-->
<p class="noindent">Repositories located in sites other than GitHub are currently considered mirrors and pull/merge requests submitted there will not be accepted. Instead, patches (as .patch files) can be submitted via email attachments. Make sure to sign-off your commits.</p>
<div class="mdframed" id="mdframed-1"><!--l. 86-->
<p class="noindent"><span class="pplbi8t-">Info.</span> GitHub PRs will be merged manually using the corresponding patches. As a result, GitHub may falsely mark them closed instead of merged.</p>

</div>
<div class="mdframed" id="mdframed-2"><!--l. 91-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> In case of submitting patches via email, the whole conversation may be publicly accessible in the future. So, do not include any personally identifiable information (PII) other than your name or email address.</p>

</div>
<h3 class="sectionHead"><span class="titlemark">1.5</span> <a href="#QQ2-1-12" id="x1-120001.5">Donation & Funding</a></h3>
<!--l. 97-->
<p class="noindent"><span class="pplri8t-">Donation or purchase is not a requirement in order to use App Manager.</span> While App Manager does not support any purchases, donations can be sent to the author of App Manager using one of the following Bitcoin addresses as a tribute:</p>
<div class="fancyvrb" id="fancyvrb1"><a id="x1-12002r1"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> 33TDkWVv5EgwfKGJk7YaS2Ev1CBzBP9Sav</span><br class="fancyvrb" /> <a id="x1-12004r2"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> 38bzvWDD99dJhXg9tC4yQEnGdnAKPtwSXG</span><br class="fancyvrb" /> <a id="x1-12006r3"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> 3FHTxPoYa92dNJK6pkhwyVkMG8Vv3VpGpg</span></div>
<!--l. 105-->
<p class="indent">By sending BTC, the sender agrees that he/she/they shall not make the transaction information public i.e. the transaction will remain anonymous, nor shall he/she/they use it as a leverage to prioritise his/her/their requested features. Feature requests do not require any bounties or donations, and they are prioritised according to the authors’ preferences. </p>
<p class="indent"><span class="pplri8t-">App Manager is open for funding/grants.</span> Representatives of the interested organizations can contact the author directly using the options given in §<a href="#x1-130001.6">1.6</a>. </p>

<h3 class="sectionHead"><span class="titlemark">1.6</span> <a href="#QQ2-1-13" id="x1-130001.6">Contact</a></h3>
<!--l. 114-->
<p class="noindent">Muntashir Al-Islam<a href="#Hfootnote./theHHfootnote"></a><a href="#fn3x1" id="fn3x1-bk"><sup class="textsuperscript">3</sup></a><a id="x1-13001f3"></a><br class="newline" /> Email: <a href="mailto:muntashirakon@riseup.net">muntashirakon [at] riseup [dot] net</a><br class="newline" /> Key Fingerprint: <span class="ectt-1000">7bad37c2981e41f8f6abea7f58f0b4f26c346fce</span><br class="newline" /> GitHub: <a href="https://github.com/MuntashirAkon" class="url"><span class="ectt-1000">https://github.com/MuntashirAkon</span></a><br class="newline" /> Twitter: <a href="https://twitter.com/Muntashir" class="url"><span class="ectt-1000">https://twitter.com/Muntashir</span></a></p>
<h2 class="chapterHead"><span class="titlemark">Chapter 2</span><br /> <a href="#QQ2-1-14" id="x1-140002">Pages</a></h2>
<h3 class="sectionHead"><span class="titlemark">2.1</span> <a href="#QQ2-1-15" id="x1-150002.1">Main Page</a></h3>
<!--l. 2-->
<p class="noindent">Main page lists all the installed apps (or a list of apps supplied by any third-party application) as well as apps that has existing backups. A single click on any installed app item opens the respective <a href="#x1-340002.2">App Details page</a>. Using the <a href="#par:main-page-sort">sort</a> option from the menu, the app items can be sorted in various ways and preserved on close. It is also possible to filter items based on your needs using the <a href="#par:main-page-filter">filter</a> option in the menu. You can filter using more than one options. You can also filter apps using app labels or package name using the search button. </p>

<h4 class="subsectionHead"><span class="titlemark">2.1.1</span> <a href="#QQ2-1-16" id="x1-160002.1.1">Batch Operations</a></h4>
<!--l. 10-->
<p class="noindent">Configure in-app theme.</p>
<ul class="itemize1">
<li class="itemize">Save APK files to <span class="ectt-1000">AppManager/apks</span></li>
<li class="itemize"><a href="#x1-1550003.2">Backup/restore/delete app data</a></li>
<li class="itemize">Clear data from apps</li>
<li class="itemize">Enable/disable/force-stop/uninstall apps</li>
<li class="itemize">Prevent background operation</li>
<li class="itemize">Block ad and tracker components</li>
<li class="itemize">Export blocking rules</li>
<li class="itemize">Add the selected apps to a <a href="#x1-690002.4">profile</a></li>
</ul>
<!--l. 25-->

<h4 class="subsectionHead"><span class="titlemark">2.1.2</span> <a href="#QQ2-1-17" id="x1-170002.1.2">Colour Codes</a></h4>
<!--l. 26-->
<p class="noindent">Enable or disable certain features in App Manager, such as</p>
<ul class="itemize1">
<li class="itemize"><span class="colorbox" id="colorbox1"><span id="textcolor2">Light greyish orange (day)</span></span> / <span class="colorbox" id="colorbox3"><span id="textcolor4">dark blue (night)</span></span> – App selected for batch operation</li>
<li class="itemize"><span class="colorbox" id="colorbox5"><span id="textcolor6">Light red (day)</span></span> / <span class="colorbox" id="colorbox7"><span id="textcolor8">dark red (night)</span></span> – Disabled app</li>
<li class="itemize"><span class="colorbox" id="colorbox9"><span id="textcolor10">Yellow Star</span></span> – App is in debug mode</li>
<li class="itemize"><span id="textcolor11">Orange <span class="pplri8t-">Date</span></span> – App can read logs (permission granted)</li>
<li class="itemize"><span id="textcolor12">Orange <span class="pplri8t-">UID</span></span> – User ID is being shared between apps</li>
<li class="itemize"><span id="textcolor13">Orange <span class="pplri8t-">SDK</span></span> – Uses cleartext (ie. HTTP) traffic</li>
<li class="itemize"><span id="textcolor14">Red <span class="pplri8t-">package name</span></span> – App does not allow clearing data</li>
<li class="itemize"><span id="textcolor15">Red <span class="pplri8t-">backup</span></span> – App not installed but has one or more backups</li>
<li class="itemize"><span id="textcolor16">Orange <span class="pplri8t-">backup</span></span> – Outdated backup, i.e. the version code of the backed up app is less than the installed version code of the same app</li>
<li class="itemize"><span id="textcolor17">Dark cyan <span class="pplri8t-">backup</span></span> – Up to date backup, i.e. the version code of the backed up app is greater than or equal to the installed version code of the same app</li>
<li class="itemize"><span id="textcolor18">Dark cyan <span class="pplri8t-">package name</span></span> – Stopped or forced closed app</li>
<li class="itemize"><span id="textcolor19">Dark cyan <span class="pplri8t-">version</span></span> – Inactive app</li>
<li class="itemize"><span id="textcolor20">Magenta</span> – Persistent app i.e. remains running all the time</li>
</ul>
<!--l. 47-->

<h4 class="subsectionHead"><span class="titlemark">2.1.3</span> <a href="#QQ2-1-18" id="x1-180002.1.3">Application Types</a></h4>
<!--l. 48-->
<p class="noindent">An app is either <span class="pplb8t-">User App</span> or <span class="pplb8t-">System App</span> along with the following codes:</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">Reject Time.</span> Last time the app op was rejected.</li>
<li class="itemize"><span class="ectt-1000">0</span> – App does not have code with it</li>
<li class="itemize"><span class="tctt-1000">°</span> – App is in suspended state</li>
<li class="itemize"><span class="ectt-1000">#</span> – App has requested a large heap</li>
<li class="itemize"><span class="ectt-1000">?</span> – App has requested VM in safe mode</li>
</ul>
<!--l. 57-->

<h4 class="subsectionHead"><span class="titlemark">2.1.4</span> <a href="#QQ2-1-19" id="x1-190002.1.4">Version Info</a></h4>
<!--l. 58-->
<p class="noindent">Version name is followed by the following prefixes:</p>
<ul class="itemize1">
<li class="itemize"><span class="ectt-1000">_</span> – No hardware acceleration</li>
<li class="itemize"><span class="ectt-1000">~</span> – Test only mode</li>
<li class="itemize"><span class="ectt-1000">debug</span> – Debuggable app</li>
</ul>
<!--l. 65-->

<h4 class="subsectionHead"><span class="titlemark">2.1.5</span> <a href="#QQ2-1-20" id="x1-200002.1.5">Options Menu</a></h4>
<!--l. 66-->
<p class="noindent">Options menu has several options which can be used to sort, filter the listed apps as well as navigate to different pages. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.1.5.1</span> <a href="#QQ2-1-21" id="x1-210002.1.5.1">Instructions</a></h5>
<!--l. 69-->
<p class="noindent">Clicking on instructions open an offline version of the App Manager documentations. It opens the online version if the corresponding feature split i.e. <span class="ectt-1000">feat_docs</span> is not installed. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.1.5.2</span> <a href="#QQ2-1-22" id="x1-220002.1.5.2">List Options</a></h5>
<!--l. 73-->
<p class="noindent">List options contain the options to sort or filter the app list. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-230002.1.5.2" id="x1-230002.1.5.2">Sort</a></span> <a id="par:main-page-sort"></a> Apps listed on the main page can be sorted in different ways. The sorting preference is preserved which means the apps will be sorted the same way that was sorted in the previous launch. Regardless of your sorting preference, however, the apps are first sorted alphabetically to prevent random results.</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">User app first.</span> User apps are listed on top</li>
<li class="itemize"><span class="pplb8t-">Name.</span> Each permission has a unique name like <span class="ectt-1000">android.permission.INTERNET</span> but multiple app can request the permission.</li>
<li class="itemize"><span class="pplb8t-">Icon.</span> Each permission can have a custom icon. The other permission tabs do not have any icon because they do not contain any icon in the app manifest.</li>
<li class="itemize"><span class="pplb8t-">Description.</span> This optional field describes the permission. If there isn’t any description associated with the permission, the field is not displayed.</li>
<li class="itemize"><span class="pplb8t-">Flags.</span> (Uses the flag symbol or <span class="pplb8t-">Protection Level</span> name) This describes various permission flags such as <span class="pplri8t-">normal</span>, <span class="pplri8t-">development</span>, <span class="pplri8t-">dangerous</span>, <span class="pplri8t-">instant</span>, <span class="pplri8t-">granted</span>, <span class="pplri8t-">revoked</span>, <span class="pplri8t-">signature</span>, <span class="pplri8t-">privileged</span>, etc.</li>
<li class="itemize"><span class="pplb8t-">Package Name.</span> Denotes the package name associated with the permission, i.e. the package that defined the permission.</li>
<li class="itemize"><span class="pplb8t-">Group.</span> The group name associated with the permission (if any). Newer Androids do not seem to use group names which is why you’ll usually see <span class="ectt-1000">android.permission-group.UNDEFINED</span> or no group name at all.</li>
<li class="itemize"><span class="pplb8t-">Disabled first.</span> List disabled apps first</li>
<li class="itemize"><span class="pplb8t-">Blocked first.</span> Sort in descending order based on the number of blocked components</li>
<li class="itemize"><span class="pplb8t-">Backup first.</span> Display apps with backups on top</li>
</ul>
<!--l. 94-->
<p class="indent"><span class="pplb8t-">Signatures</span> are actually called signing info. An application is signed by one or more singing certificates by the application developers before publishing it. The integrity of an application (whether the app is from the actual developer and isn’t modified by other people) can be checked using the signing info; because when an app is modified by a third-party unauthorised person, the app cannot be signed using the original certificate(s) again because the signing info are kept private by the actual developer. <span class="pplri8t-">How do you verify these signatures?</span> Using checksums. Checksums are generated from the certificates themselves. If the developer supplies the checksums, you can match the checksums using the different checksums generated in the <span class="pplb8t-">Signatures</span> tab. For example, if you have downloaded App Manager from Github, Telegram Channel or IzzyOnDroid’s repo, you can verify whether the app is actually released by me by simply matching the following <span class="pplri8t-">SHA256</span> checksum with the one displayed in this tab: </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-240002.1.5.2" id="x1-240002.1.5.2">Filter</a></span> <a id="par:main-page-filter"></a> Apps listed on the main page can be filtered in a number of ways. Like sorting, filtering preferences are also stored and retained after a relaunch.</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">User apps.</span> List only the user apps</li>
<li class="itemize"><span class="pplb8t-">System apps.</span> List only the system apps</li>
<li class="itemize"><span class="pplb8t-">Disabled apps.</span> List only the disabled apps</li>
<li class="itemize"><span class="pplb8t-">Apps with rules.</span> List the apps with one or more blocking rules</li>
<li class="itemize"><span class="pplb8t-">Apps with activities.</span> List the apps with one or more activities</li>
<li class="itemize"><span class="pplb8t-">Apps with backups.</span> List apps with one or more backups (including uninstalled apps)</li>
<li class="itemize"><span class="pplb8t-">Apps without backups.</span> List apps without any backups (including uninstalled apps)</li>
<li class="itemize"><span class="pplb8t-">Running apps.</span> List apps that are currently running (either in foreground or background)</li>
<li class="itemize"><span class="pplb8t-">Apps with splits.</span> List apps with one or more split APKs</li>
<li class="itemize"><span class="pplb8t-">Installed apps.</span> List only installed apps</li>
<li class="itemize"><span class="pplb8t-">Uninstalled apps.</span> List only uninstalled apps including backups</li>
</ul>
<!--l. 113-->
<p class="indent">Unlike sorting, you can filter using more than one option. For example, you can list the disabled user apps by filtering app lists selecting <span class="pplri8t-">user apps</span> and <span class="pplri8t-">disabled apps</span>. This is particularly useful for <a href="#x1-160002.1.1">batch operations</a> where you can filter all user apps to carry out certain operations. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.1.5.3</span> <a href="#QQ2-1-25" id="x1-250002.1.5.3">1-Click Ops</a></h5>
<!--l. 118-->
<p class="noindent"><a href="#x1-550002.3">1-Click Ops</a> stands for <span class="pplb8t-">One-Click Operations</span>. You can directly open the corresponding page by clicking on this option. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.1.5.4</span> <a href="#QQ2-1-26" id="x1-260002.1.5.4">App Usage</a></h5>
<!--l. 122-->
<p class="noindent">App usage statistics such as <span class="pplri8t-">screen time</span>, <span class="pplri8t-">data usage</span> (both mobile and Wifi), <span class="pplri8t-">number of</span> <span class="pplri8t-">times an app was opened</span> can be accessed by clicking on the <span class="pplb8t-">App Usage</span> option in the menu (requires <span class="pplri8t-">Usage Access</span> permission). </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.1.5.5</span> <a href="#QQ2-1-27" id="x1-270002.1.5.5">System Config</a></h5>
<!--l. 127-->
<p class="noindent">Display various system configurations, whitelists/blacklists included in Android by either OEM/vendor, AOSP or even some Magisk modules. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.1.5.6</span> <a href="#QQ2-1-28" id="x1-280002.1.5.6">Running Apps</a></h5>
<!--l. 131-->
<p class="noindent">A list of running apps or processes can be viewed by clicking on the <span class="pplb8t-">Running Apps</span> option in the menu (requires root or <a href="#x1-1360003.1">ADB</a>). Running apps or processes can also be force-closed or killed within the resultant page. Logs for each process ID (PID) can also be viewed in the <a href="#x1-310002.1.5.9">log viewer</a>. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.1.5.7</span> <a href="#QQ2-1-29" id="x1-290002.1.5.7">APK Updater</a></h5>
<!--l. 137-->
<p class="noindent">This option can be used to configure certain <a href="#x1-247000C">app operations</a> of all or selected apps. You can insert more than one app op constants separated by spaces. It is not always possible to know in advance about all the app op constants as they vary from device to device and from OS to OS. To find the desired app op constant, browse the <span class="pplri8t-">App Ops</span> tab in the <a href="#x1-340002.2">App Details page</a>. The constants are integers closed inside brackets next to each app op name. You can also use the app op names. You also have to select one of the <a href="#x1-252000C.3.2">modes</a> that will be applied against the app ops. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.1.5.8</span> <a href="#QQ2-1-30" id="x1-300002.1.5.8">Profiles</a></h5>
<!--l. 142-->
<p class="noindent">Opens the <a href="#x1-690002.4">profiles page</a>. Profiles are a way to configure regularly used tasks. You can also add shortcuts of the profiles in the launcher to run them directly. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.1.5.9</span> <a href="#QQ2-1-31" id="x1-310002.1.5.9">Log Viewer</a></h5>
<!--l. 147-->
<p class="noindent"><span class="paragraphHead"><a href="#x1-600002.3.4" id="x1-600002.3.4">Back up all apps.</a></span> Back up all the installed apps. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.1.5.10</span> <a href="#QQ2-1-32" id="x1-320002.1.5.10">Termux</a></h5>
<!--l. 153-->
<p class="noindent"><span class="paragraphHead"><a href="#x1-640002.3.4" id="x1-640002.3.4">Back up apps with changes.</a></span> If an app has changed since the last backup, redo backup for it. It checks a number of indices including app version, last update date, last launch date, integrity and file hashes. Directory hashes are taken during the back up and stored in a database. On running this operation, new hashes are taken and compared with the ones kept in the database. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.1.5.11</span> <a href="#QQ2-1-33" id="x1-330002.1.5.11">Settings</a></h5>
<!--l. 157-->
<p class="noindent">Activities, services, broadcast receivers (also known as receivers) and content providers (also known as providers) are jointly called app components. More technically, they all inherit the <a href="https://developer.android.com/reference/android/content/pm/ComponentInfo">ComponentInfo</a> class.</p>
<h3 class="sectionHead"><span class="titlemark">2.2</span> <a href="#QQ2-1-34" id="x1-340002.2">App Details Page</a></h3>
<!--l. 2-->
<p class="noindent"><span class="pplri8t-">See also:</span> <a href="#x1-1690004.1.7"><span class="pplri8t-">FAQ: Tracker classes vs tracker components</span></a> </p>

<h4 class="subsectionHead"><span class="titlemark">2.2.1</span> <a href="#QQ2-1-35" id="x1-350002.2.1">Colour Codes</a></h4>
<!--l. 7-->
<p class="noindent">List of background colours used in this page, and their meaning:</p>
<ul class="itemize1">
<li class="itemize"><span class="colorbox" id="colorbox21"><span id="textcolor22">Red (day)</span></span> / <span class="colorbox" id="colorbox23"><span id="textcolor24">dark red (night)</span></span> – Any app op or permission that has the dangerous flag is marked as red. Components that are blocked within App Manager are also marked as red</li>
<li class="itemize"><span class="colorbox" id="colorbox25"><span id="textcolor26">Light red (day)</span></span> / <span class="colorbox" id="colorbox27"><span id="textcolor28">very dark red (night)</span></span> – Components that are disabled outside App Manager have these colors. It should be noted that a component that is marked as disabled does not always mean that it is disabled by the user: It could be disabled by the system as well or marked as disabled in the app manifest. Also, all components of a disabled app are considered disabled by the system (and by App Manager as well)</li>
<li class="itemize"><span class="pplb8t-">Presets.</span> Presets option lists a number of built-in profiles that can be used as a starting point. The profiles are generated from the project <a href="https://gitlab.com/W1nst0n/universal-android-debloater">Universal Android Debloater</a>.<br class="newline" /> <span class="pplri8t-">See also:</span> <a href="#x1-1810004.3.5"><span class="pplri8t-">FAQ: What are bloatware and how to remove them?</span></a></li>
<li class="itemize"><span class="pplb8t-">Import.</span> This option can be used to import an existing profile.</li>
</ul>
<!--l. 26-->

<h4 class="subsectionHead"><span class="titlemark">2.2.2</span> <a href="#QQ2-1-36" id="x1-360002.2.2">App Info Tab</a></h4>
<!--l. 27-->
<p class="noindent"><span class="pplb8t-">App Info</span> tab contains general information about an app. It also lists many actions that can be performed within this tab. A complete description is given below: </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.2.2.1</span> <a href="#QQ2-1-37" id="x1-370002.2.2.1">General Information</a></h5>
<!--l. 31-->
<p class="noindent">The list below is in the same order as listed in the App Info tab.</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">App Icon.</span> The application icon. If an app doesn’t have an icon, the system default icon is displayed.</li>
<li class="itemize"><span class="pplb8t-">App Label.</span> The application label or application name.</li>
<li class="itemize"><span class="pplb8t-">Version.</span> Application version is divided into two parts. The first part is called <span class="pplri8t-">version name</span>, the format of this part varies but it often consists of multiple integers separated by dots. The second part is called <span class="pplri8t-">version</span> <span class="pplri8t-">code</span> and it is closed under first brackets. Version code is an integer which is usually used to differentiate between app versions (as version name can often be unreadable by a machine). In general, new version of an app has higher version code than the old ones. For instance, if <span class="ectt-1000">123</span> and <span class="ectt-1000">125</span> are two version codes of an app, we can say that the latter is more updated than the former because the version code of the latter is higher. For applications that depend on platforms (mobile, tabs, desktops, etc.), these version numbers can be misleading as they use prefixes for each platform.</li>
<li class="itemize"><span class="pplb8t-">Tags.</span> (Also known as tag clouds) Tags include the basic, concise and most useful info of an app. Tags contain <span class="pplri8t-">tracker info</span> (i.e. number of tracker components), <span class="pplri8t-">app type</span> (user app or system app and whether the app is an updated version of the system app or if the app is installed systemless-ly using Magisk), <span class="pplri8t-">running</span> (i.e. one or more services of the app is running in the background), <span class="pplri8t-">split APK info</span> (i.e. number of splits), <span class="pplri8t-">debuggable</span> (the app is a debug version), <span class="pplri8t-">test only</span> (the app is a test only app), <span class="pplri8t-">large heap</span> (the app has requested a large heap size), <span class="pplri8t-">stopped</span> (the app is force stopped), <span class="pplri8t-">disabled</span> (the app is disabled), <span class="pplri8t-">KeyStore</span> (the app has items in the Android KeyStore), <span class="pplri8t-">no code</span> (the app doesn’t have any code associated with it), <a href="#x1-30001.1"><span class="pplri8t-">SSAID</span></a>, <span class="pplri8t-">netpolicy</span> (network policy such as background data usage), and <span class="pplri8t-">battery optimization</span>. The importance of including <span class="pplri8t-">test</span> <span class="pplri8t-">only</span> and <span class="pplri8t-">debuggable</span> is that app with these properties can do additional tasks or these apps can be <span class="ectt-1000">run-as</span> without root which can cause potential security problems if these apps store any private information. <span class="pplri8t-">Large</span> <span class="pplri8t-">heap</span> denotes that the app will be allocated a higher amount of memory (RAM) if needed. While this may not be harmful for most cases, any suspicious apps requesting large heap should be taken seriously.</li>
<li class="itemize"><span class="pplb8t-">Horizontal Action Panel.</span> This is an action panel containing various actions regarding the app. See §<a href="#x1-380002.2.2.2">2.2.2.2</a> for a complete list of actions available here.</li>
<li class="itemize"><span class="pplb8t-">Paths & Directories.</span> Contains various information regarding application paths including <span class="pplri8t-">app directory</span> (where the APK files are stored), <span class="pplri8t-">data directories</span> (internal, device protected and externals), <span class="pplri8t-">split</span> <span class="pplri8t-">APK directories</span> (along with the split names), and <span class="pplri8t-">native JNI library</span> (if present). JNI libraries are used to invoke native codes usually written in C/C++. Use of native library can make the app run faster or help an app use third-party libraries written using languages other than Java like in most games. You can also open these directories using your favourite file managers (provided they support it and have necessary permissions) by clicking on the launch icon on the right-hand side of each item.</li>
<li class="itemize"><span class="pplb8t-">Data Usage Since Last Boot.</span> A rather self explanatory option. But beware that due to some issues, the results might often be misleading and simply wrong. This part remains hidden if <span class="pplri8t-">Usage Access</span> permission is not granted in newer devices.</li>
<li class="itemize"><span class="pplb8t-">Apply.</span> This option can be used to apply the profile. When clicked, a dialog will be displayed where you can select a <a href="#x1-760002.5.3.2">profile state</a>. On selecting one of the options, the profile will be applied immediately.</li>
<li class="itemize"><span class="pplb8t-">Save.</span> Allows you to save the profile.
<ul class="itemize2">
<li class="itemize"><span class="pplb8t-">SDK.</span> Displays information related to the Android SDK. There are two (one in old devices) values: <span class="pplri8t-">Max</span> denotes the target SDK and <span class="pplri8t-">Min</span> denotes the minimum SDK (the latter is not available in old devices). It is best practice to use apps with maximum SDK that the platform currently supports. SDK is also known as <span class="pplb8t-">API Level</span>. <span class="pplri8t-">See</span> <span class="pplri8t-">also:</span> <a href="https://en.wikipedia.org/wiki/Android_version_history#Overview"><span class="pplri8t-">Android Version History</span></a></li>
<li class="itemize"><span class="pplb8t-">Flags.</span> The application flags used at the time of building the app. For a complete list of flags and what they do, visit the <a href="https://developer.android.com/reference/android/content/pm/ApplicationInfo#flags">official documentation</a>.</li>
<li class="itemize"><span class="pplb8t-">Date Installed.</span> The date when the app was first installed.</li>
<li class="itemize"><span class="pplb8t-">Date Updated.</span> The date when the app was last updated. This is the same as <span class="pplri8t-">Date Installed</span> if the app hasn’t been updated.</li>
<li class="itemize"><span class="pplb8t-">Installer App.</span> The app that installed this app. Not all app supply the information used by the package manager to register the installer app. Therefore, this value should not be taken for granted.</li>
<li class="itemize"><span class="pplb8t-">Benutzer-ID.</span> Die eindeutige Benutzer-ID, die der App vom Android-System zugewiesen wird. Bei gemeinsam genutzten Anwendungen wird die gleiche Benutzer-ID mehreren Anwendungen zugewiesen, die die gleiche <span class="pplri8t-">Gemeinsame Benutzer-ID</span> haben.</li>
<li class="itemize"><span class="pplb8t-">Gemeinsame Benutzer-ID.</span> Gilt für Anwendungen, die gemeinsam genutzt werden. Obwohl hier ID steht, handelt es sich tatsächlich um einen String-Wert. Die gemeinsam genutzte Anwendung muss die gleichen <a href="#x1-530002.2.5">Signaturen</a> haben.</li>
<li class="itemize"><span class="pplb8t-">Hauptaktivität.</span> Der Haupteinstiegspunkt in die App. Dies ist nur sichtbar, wenn die App <a href="#x1-420002.2.3.1">Aktivitäten</a> hat und eine davon vom Launcher aus geöffnet werden kann. Es gibt auch eine Start-Schaltfläche auf der rechten Seite, die zum Starten dieser Aktivität verwendet werden kann.</li>
</ul>
</li>
</ul>
<!--l. 113-->

<h5 class="subsubsectionHead"><span class="titlemark">2.2.2.2</span> <a href="#QQ2-1-38" id="x1-380002.2.2.2">Horizontales Aktionsfeld</a></h5>
<!--l. 114-->
<p class="noindent">Das horizontale Aktionsfeld, wie im vorherigen Abschnitt beschrieben, besteht aus verschiedenen app-bezogenen Aktionen, wie z. B.–</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">Launch.</span> Anwendungen, die über einen Launcher <a href="#x1-420002.2.3.1">Aktivitäten</a> verfügen, können über diese Schaltfläche gestartet werden.</li>
<li class="itemize"><span class="pplb8t-">Disable.</span> Disable an app. This button is not displayed for already disabled apps or to users who do not have root or <a href="#x1-1360003.1">ADB</a>. If you disable an app, the app will not be displayed in your Launcher app. Shortcuts for the app will also be removed. If you disable a user app, you can only enable them via App Manager or any other tool that supports it. There isn’t any option in Android Settings to enable a disabled user app.</li>
<li class="itemize"><span class="pplb8t-">Uninstall.</span> Uninstall an app.</li>
<li class="itemize"><span class="pplb8t-">Enable.</span> Enable an app. This button is not displayed for already enabled apps or to users who do not have root or ADB.</li>
<li class="itemize"><span class="pplb8t-">Force Stop.</span> Force-stop an app. When you force stop an app, the app will not be able to run in background unless you explicitly open it first. However, this is not always true.</li>
<li class="itemize"><span class="pplb8t-">Clear Data.</span> Clear data from an app. This includes any information stored in the internal and often the external directories, including accounts (if set by the app), cache, etc. Clearing data from App Manager, for example, removes all the rules (the blocking is not removed though) saved within the app. Which is why you should always take backups of your rules. This button is not displayed to users who do not have root or ADB.</li>
<li class="itemize"><span class="pplb8t-">Clear Cache.</span> Clear app cache only. There is not any Android-way to clear app cache. Therefore, it needs root permission to clear cache from the app’s internal storage.</li>
<li class="itemize"><span class="pplb8t-">Install.</span> Install an APK opened using any third-party app. This button is only displayed for an external APK that hasn’t been installed.</li>
<li class="itemize"><span class="pplb8t-">What’s New.</span> This button is displayed for an APK that has higher version code than the installed one. Clicking on this button displays a dialog consisting of differences in a version control manner. The information it displays include <span class="pplri8t-">version</span>, <span class="pplri8t-">trackers</span>, <span class="pplri8t-">permissions</span>, <span class="pplri8t-">components</span>, <span class="pplri8t-">signatures</span> (checksum changes), <span class="pplri8t-">features</span>, <span class="pplri8t-">shared libraries</span> and <span class="pplri8t-">SDK</span>.</li>
<li class="itemize"><span class="pplb8t-">Update.</span> Displayed for an app that has a higher version code than the installed app.</li>
<li class="itemize"><span class="pplb8t-">Reinstall.</span> Displayed for an app that has the same version code as the installed app.</li>
<li class="itemize"><span class="pplb8t-">Downgrade.</span> Displayed for an app that has a lower version code than the installed app.</li>
<li class="itemize"><span class="pplb8t-">Manifest.</span> Clicking on this button displays the app’s manifest file in a separate page. The manifest file can be wrapped or unwrapped using the corresponding toggle button (on the top-right side) or can be saved to you shared storage using the save button.</li>
<li class="itemize"><span class="pplb8t-">Scanner.</span> Clicking on this button displays the app’s tracker and library information. At first, it scans the app to extract a list of classes. Then the class list is matched with a number of signatures. After that, a scan summary is displayed.<br class="newline" /> <span class="pplri8t-">See also:</span> <a href="#x1-1200002.7"><span class="pplri8t-">Scanner page</span></a></li>
<li class="itemize"><span class="pplb8t-">Shared Prefs.</span> Clicking on this button displays a list of shared preferences used by the app. Clicking on a preference item in the list opens the <a href="#x1-1340002.9">Shared Preferences Editor page</a>. This option is only visible to the root users.</li>
<li class="itemize"><span class="pplb8t-">Databases.</span> Clicking on this button displays a list of databases used by the app. This needs more improvements, and a database editor which might be added in the future. This option is only visible to the root users.</li>
<li class="itemize"><span class="pplb8t-">F-Droid.</span> Opens the app in your favourite <span class="pplri8t-">F-Droid</span> client.</li>
<li class="itemize"><span class="pplb8t-">Store.</span> Opens the app in <span class="pplri8t-">Aurora Store</span>. The option is only visible if <span class="pplri8t-">Aurora</span> <span class="pplri8t-">Store</span> is installed.</li>
</ul>
<!--l. 177-->

<h5 class="subsubsectionHead"><span class="titlemark">2.2.2.3</span> <a href="#QQ2-1-39" id="x1-390002.2.2.3">Options Menu</a></h5>
<!--l. 178-->
<p class="noindent">Options-menu is located in the top-right corner of the page. A complete description of the options present there are given below:</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">Share.</span> Share button can be used to share the APK file or <span class="pplri8t-">APKS</span> file (if the app is has multiple splits) can be imported into <a href="https://github.com/Aefyr/SAI">SAI</a>. You can share it with your favourite file manager to save the file in your shared storage.</li>
<li class="itemize"><span class="pplb8t-">Backup options.</span> Same as the <a href="#x1-1570003.2.2">backup options</a> of the backup/restore feature. If not set, the default options will be used.</li>
<li class="itemize"><span class="pplb8t-">Backup name.</span> Set a custom name for the backup. If the backup name is set, each time a backup is made, it will be given a unique name with backup-name as the suffix. This behaviour will be fixed in a future release. Leave this field empty for regular or “base” backup (also, make sure not to enable <span class="pplri8t-">backup multiple</span> in the backup options).</li>
<li class="itemize"><span class="pplb8t-">Backup/Restore.</span> Opens the backup/restore dialog.</li>
<li class="itemize"><span class="pplb8t-">Export Blocking Rules.</span> Export rules configured for this app within App Manager.</li>
<li class="itemize"><span class="pplb8t-">Open in Termux.</span> Opens the app in Termux. This actually runs <span class="ectt-1000">su -</span> <span class="ectt-1000">user_id</span> where <span class="ectt-1000">user_id</span> denotes the app’s kernel user ID (described in the <a href="#x1-370002.2.2.1">General Information section</a>). This option is only visible to the root users. See §<a href="#x1-400002.2.2.4">2.2.2.4</a> to learn how to configure Termux to run commands from third-party applications.</li>
<li class="itemize"><span class="pplb8t-">Run in Termux.</span> Open the app using <span class="ectt-1000">run-as package_name</span> in Termux. This is only applicable for the debuggable apps and works for both root and ADB users. See §<a href="#x1-400002.2.2.4">2.2.2.4</a> to learn how to configure Termux to run commands from third-party applications.</li>
<li class="itemize"><span class="pplb8t-">Extract Icon.</span> Extract and save the app’s icon in your desired location.</li>
</ul>
<!--l. 202-->

<h5 class="subsubsectionHead"><span class="titlemark">2.2.2.4</span> <a href="#QQ2-1-40" id="x1-400002.2.2.4">Termux</a></h5>
<!--l. 203-->
<p class="noindent">By default, Termux does not allow running commands from third-party applications. To enable this option, you have to add <span class="ectt-1000">allow-external-apps=true</span> in <span class="ectt-1000">~/.termux/termux.properties</span>, and make sure that you are running Termux v0.96 or later.</p>
<div class="mdframed" id="mdframed-3"><!--l. 207-->
<p class="noindent"><span class="pplbi8t-">Info.</span> Enabling this option does not weaken your Termux’ security. The third-party apps still need to request the user to allow running arbitrary commands in Termux like any other dangerous permissions.</p>

</div>
<h4 class="subsectionHead"><span class="titlemark">2.2.3</span> <a href="#QQ2-1-41" id="x1-410002.2.3">Component Tabs</a></h4>
<!--l. 213-->
<p class="noindent"><span class="pplb8t-">Activities</span>, <span class="pplb8t-">Services</span>, <span class="pplb8t-">Receivers</span> (originally <span class="pplri8t-">broadcast receivers</span>) and <span class="pplb8t-">Providers</span> (originally <span class="pplri8t-">Content Providers</span>) are together called the application components. This is because they share similar features in many ways. For example, they all have a <span class="pplri8t-">name</span> and a <span class="pplri8t-">label</span>. Application components are the building blocks of any application, and most of these have to declared in the application manifest. Application manifest is a file where application specific metadata are stored. The Android operating system learns what to do with an app by reading the metadata. Colours used in these tabs are explained in §<a href="#x1-350002.2.1">2.2.1</a>. You also have the ability to sort the list of components to display blocked or tracker components on top of the list using the <span class="pplb8t-">Sort</span> option in the overflow menu. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.2.3.1</span> <a href="#QQ2-1-42" id="x1-420002.2.3.1">Activities</a></h5>
<!--l. 223-->
<p class="noindent"><span class="pplb8t-">Activities</span> are windows or pages that you can browse (for instance <span class="pplri8t-">Main page</span> and <span class="pplri8t-">App Details page</span> are two separate activities). In other words, an activity is a user interface (UI) component. Each activity can have multiple UI components known as <span class="pplri8t-">widgets</span> or <span class="pplri8t-">fragments</span>, and similarly, each of these latter components can have multiple of them nested or on top of each other. But an activity is the <span class="pplri8t-">master</span> component: There cannot be two nested activities. An application author can also choose to open external files within an activity using a method called <span class="pplri8t-">intent filters</span>. When you try to open a file using your file manager, either your file manager or system scans for intent filters to decide which activities can open that particular file and offers you to open the file with these activities (therefore, it is nothing to do with the application itself). There are other intent filters as well. </p>
<p class="indent">Activities which are <span class="pplri8t-">exportable</span> can be usually opened by any third-party apps (some activities require permissions, if that is the case, only an app having those permissions can open them). In the <span class="pplri8t-">Activities</span> tab, the name of the activity (on top of each list item) is actually a button. It is enabled for the <span class="pplri8t-">exportable</span> activities and disabled for others (root users can open any activities). You can click on the button to open the activity directly in App Manager. You can also open the Interceptor page by long clicking on an activity. Currently, it only works for <span class="pplri8t-">exportable</span> activities.</p>
<div class="mdframed" id="mdframed-4"><!--l. 240-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> If you are not able to open any activity, chances are it has certain dependencies which are not met, e.g. you cannot open <span class="pplri8t-">App Details Activity</span> because it requires that you at least supply a package name. These dependencies cannot always be inferred programmatically. Therefore, you cannot open them using App Manager.</p>

</div>
<!--l. 246-->
<p class="indent">You can also create shortcut for these <span class="pplri8t-">exportable</span> activities (using the dedicated button), and if you want, you can edit the shortcut as well using the <span class="pplri8t-">Edit Shortcut</span> button.</p>
<div class="mdframed" id="mdframed-5"><!--l. 249-->
<p class="noindent"><span class="pplbi8t-">Caution.</span> If you uninstall App Manager, all shortcuts created by App Manager will be lost.</p>

</div>
<h5 class="subsubsectionHead"><span class="titlemark">2.2.3.2</span> <a href="#QQ2-1-43" id="x1-430002.2.3.2">Services</a></h5>
<!--l. 254-->
<p class="noindent">Unlike <a href="#x1-420002.2.3.1">activities</a> which users can see, <span class="pplb8t-">Services</span> handle background tasks. If you’re, for example, downloading a video from the internet using your phone’s Internet browser, the Internet browser is using a foreground service to download the content. </p>
<p class="indent">When you close an activity, it usually gets destroyed immediately (depending on many factors such as how much free memory your phone has). But services can be run for indefinite periods if desired. If more services are running in background, your phone will get slower due to shortage of memory and/or processing power, and your phone’s battery can be drained more quickly. Newer Android versions have a battery optimisation feature enabled by default for all apps. With this feature enabled, the system can randomly terminate any service. </p>
<p class="indent">Configure in-app theme. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.2.3.3</span> <a href="#QQ2-1-44" id="x1-440002.2.3.3">Receivers</a></h5>
<!--l. 270-->
<p class="noindent">Lock App Manager using Android screen lock provided a screen lock is configured. 
</p>

<h5 class="subsubsectionHead"><span class="titlemark">2.2.3.4</span> <a href="#QQ2-1-45" id="x1-450002.2.3.4">Providers</a></h5>
<!--l. 285-->
<p class="noindent"><span class="pplb8t-">Providers</span> (also called <span class="pplri8t-">content providers</span>) are used for data management. For example, when you save an apk file or export rules in App Manager, it uses a content provider called ‘androidx.core.content.FileProvider‘ to save the APK or export the rules. There are other content providers or even custom ones to manage various content-related tasks such as database management, tracking, searching, etc. Each content provider has a field called <span class="pplri8t-">Authority</span> which is unique to that particular app in the entire Android eco-system just like the package name. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.2.3.5</span> <a href="#QQ2-1-46" id="x1-460002.2.3.5">Additional Features for Rooted Phones</a></h5>
<!--l. 292-->
<p class="noindent">Unlike non-root users who are mostly spectators in these tabs, root users can perform various operations. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-470002.2.3.5" id="x1-470002.2.3.5">Blocking Components</a></span> On the right-most side of each component item, there is a “block” icon (which becomes a “unblock/restore” icon when the component is being blocked). This icon (actually, a button) can be used to toggle the blocking status of that particular component. If you do not have <a href="#x1-1100002.6.9.1">Instant Component Blocking</a> enabled or haven’t applied blocking for the app before, you have to apply the changes using the <span class="pplb8t-">Apply rules</span> option in three-dots menu. You can also remove already applied rules using the same option (which would be read as <span class="pplb8t-">Remove rules</span> this time). </p>
<p class="noindent">Enable or disable certain features in App Manager, such as </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-480002.2.3.5" id="x1-480002.2.3.5">Blocking Trackers</a></span> <a id="likesection.5"></a> You can disable tracker components using the <span class="pplb8t-">Block tracker</span> option in the three-dots menu. All tracker components will be blocked regardless of the tab you’re currently in.</p>
<div class="mdframed" id="mdframed-6"><!--l. 310-->
<p class="noindent"><span class="pplbi8t-">Info.</span> Tracker components are a subset of app components. Therefore, they are blocked using the same method used for blocking any other components.</p>

</div>
<!--l. 315-->
<p class="indent"></p>
<div class="am-see-also"><span class="pplri8t-">See also:</span> <span class="pplri8c-">•</span> <a href="#x1-1690004.1.7"><span class="pplri8t-">FAQ: Tracker classes versus tracker components</span></a> <span class="pplri8c-">•</span> <a href="#x1-1200002.7"><span class="pplri8t-">Scanner Page</span></a> <span class="pplri8c-">•</span> <a href="#x1-560002.3.1"><span class="pplri8t-">1-Click Ops Page: Block/Unblock Trackers</span></a> 

</div>
<h4 class="subsectionHead"><span class="titlemark">2.6.6</span> <a href="#QQ2-1-95" id="x1-950002.6.6">APK Signing</a></h4>
<!--l. 322-->
<p class="noindent"><span class="pplb8t-">App Ops</span>, <span class="pplb8t-">Uses Permissions</span> and <span class="pplb8t-">Permissions</span> tabs are related to permissions. In Android communication between apps or processes which do not have the same identity (known as <span class="pplri8t-">shared id</span>) often require permission(s). These permissions are managed by the permission controller. Some permissions are considered <span class="pplri8t-">normal</span> permissions which are granted automatically if they appear in the application manifest, but <span class="pplri8t-">dangerous</span> and <span class="pplri8t-">development</span> permissions require confirmation from the user. Colours used in these tabs are explained in §<a href="#x1-350002.2.1">2.2.1</a>. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.2.4.1</span> <a href="#QQ2-1-50" id="x1-500002.2.4.1">App Ops</a></h5>
<!--l. 330-->
<p class="noindent"><span class="pplb8t-">App Ops</span> stands for <span class="pplb8t-">Application Operations</span>. Since Android 4.3, <span class="pplri8t-">App Ops</span> are used by Android system to control most of the application permissions. Each app op has a unique number associated with them which are closed inside first brackets in the App Ops tab. They also have a private and optionally, a public name. Some app ops are also associated with <span class="pplri8t-">permissions</span>. The dangerousness of an app op is decided based on the associated permission, and other information such as <span class="pplri8t-">flags</span>, <span class="pplri8t-">permission name</span>, <span class="pplri8t-">permission description</span>, <span class="pplri8t-">package name</span>, <span class="pplri8t-">group</span> are taken from the associated <a href="#x1-520002.2.4.3">permission</a>. Other information may include the following:</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">Mode.</span> It describes the current authorisation status which can be <span class="pplri8t-">allow</span>, <span class="pplri8t-">deny</span> (a rather misnomer, it simply means error), <span class="pplri8t-">ignore</span> (it actually means deny), <span class="pplri8t-">default</span> (inferred from a list of defaults set internally by the vendor), <span class="pplri8t-">foreground</span> (in newer Androids, it means the app op can only be used when the app is running in foreground), and some custom modes set by the vendors (MIUI uses <span class="pplri8t-">ask</span>, for instance).</li>
<li class="itemize"><span class="pplb8t-">Duration.</span> The amount of time this app op has been used (there can be negative durations whose use cases are currently unknown to me).</li>
<li class="itemize"><span class="pplb8t-">Accept Time.</span> Last time the app op was accepted.</li>
<li class="itemize"><span class="pplb8t-">Reject Time.</span> Last time the app op was rejected.</li>
</ul>
<div class="mdframed" id="mdframed-7"><!--l. 354-->
<p class="noindent"><span class="pplbi8t-">Info.</span> Contents of this tab are visible to no-root users if <span class="ectt-1000">android.permission.GET_APP_OPS_STATS</span> is granted via ADB.</p>

</div>
<!--l. 358-->
<p class="indent">There is a toggle button next to each app op item which can be used to allow or deny (ignore) the app op. If you need to set other modes available to your device, simply long click on an item. If you need to set additional app ops that are not listed in the tab, use the <span class="pplri8t-">Set custom app op</span> option in the menu. You can also reset your changes using the <span class="pplri8t-">Reset to default</span> option or deny all dangerous app ops using the corresponding option in the menu. You can also sort them in ascending order by app op names and the associated unique numbers (or values). You can also list the denied app ops first using the corresponding sorting option.</p>
<div class="mdframed" id="mdframed-8"><!--l. 366-->
<p class="noindent"><span class="pplbi8t-">Warning.</span> Denying an app op may cause the app to misbehave. Use the <span class="pplri8t-">reset to</span> <span class="pplri8t-">default</span> option if that is the case. Due to the nature how app ops work, the system may take some time to apply them.</p>

</div>
<!--l. 372-->
<p class="noindent"><span class="pplri8t-">See also:</span> <a href="#x1-247000C"><span class="pplri8t-">Appendix: App Ops</span></a></p>
<h5 class="subsubsectionHead"><span class="titlemark">2.6.7.4</span> <a href="#QQ2-1-102" id="x1-1020002.6.7.4">Installer App</a></h5>
<!--l. 375-->
<p class="noindent">Select the installer app, useful for some apps which explicitly checks for their installer. This only works for root/ADB users. </p>
<p class="indent"><span class="pplb8t-">Root and ADB users</span> can grant or revoke the <span class="pplri8t-">dangerous</span> and <span class="pplri8t-">development</span> permissions using the toggle button on the right side of each permission item. They can also revoke dangerous permissions all at once using the corresponding option in the menu. Only these two types of permissions can be revoked because Android doesn’t allow modifying <span class="pplri8t-">normal</span> permissions (which most of them are). The only alternative is to edit the app manifest and remove these permissions from there.</p>
<div class="mdframed" id="mdframed-9"><!--l. 386-->
<p class="noindent"><span class="pplbi8t-">Info.</span> Since dangerous permissions are revoked by default by the system, revoking all dangerous permissions is the same as resetting all permissions.</p>

</div>
<div class="mdframed" id="mdframed-10"><!--l. 391-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> Permissions cannot be changed for apps targeting API 23 or earlier. Therefore, permission toggles are disabled for such apps.</p>

</div>
<!--l. 396-->
<p class="indent">Users can sort the permissions by permission name (in ascending order) or choose to display denied or dangerous permissions at first using the corresponding options in the menu.</p>
<h5 class="subsubsectionHead"><span class="titlemark">2.6.8.3</span> <a href="#QQ2-1-106" id="x1-1060002.6.8.3">Backup apps with Android KeyStore</a></h5>
<!--l. 400-->
<p class="noindent">Allow backup of apps that has entries in the Android KeyStore (disabled by default). Some apps (such as Signal) may crash if restored. KeyStore backup also doesn’t work from Android 9 but still kept as many apps having KeyStore can be restored without problem.</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">Name.</span> Each permission has a unique name like <span class="ectt-1000">android.permission.INTERNET</span> but multiple app can request the permission.</li>
<li class="itemize"><span class="pplb8t-">Icon.</span> Each permission can have a custom icon. The other permission tabs do not have any icon because they do not contain any icon in the app manifest.</li>
<li class="itemize"><span class="pplb8t-">Description.</span> This optional field describes the permission. If there isn’t any description associated with the permission, the field is not displayed.</li>
<li class="itemize"><span class="pplb8t-">Flags.</span> (Uses the flag symbol or <span class="pplb8t-">Protection Level</span> name) This describes various permission flags such as <span class="pplri8t-">normal</span>, <span class="pplri8t-">development</span>, <span class="pplri8t-">dangerous</span>, <span class="pplri8t-">instant</span>, <span class="pplri8t-">granted</span>, <span class="pplri8t-">revoked</span>, <span class="pplri8t-">signature</span>, <span class="pplri8t-">privileged</span>, etc.</li>
<li class="itemize"><span class="pplb8t-">Package Name.</span> Denotes the package name associated with the permission, i.e. the package that defined the permission.</li>
<li class="itemize"><span class="pplb8t-">Group.</span> The group name associated with the permission (if any). Newer Androids do not seem to use group names which is why you’ll usually see <span class="ectt-1000">android.permission-group.UNDEFINED</span> or no group name at all.</li>
</ul>
<!--l. 423-->

<h4 class="subsectionHead"><span class="titlemark">2.2.5</span> <a href="#QQ2-1-53" id="x1-530002.2.5">Signatures Tab</a></h4>
<!--l. 424-->
<p class="noindent"><span class="pplb8t-">Signatures</span> are actually called signing info. An application is signed by one or more singing certificates by the application developers before publishing it. The integrity of an application (whether the app is from the actual developer and isn’t modified by other people) can be checked using the signing info; because when an app is modified by a third-party unauthorised person, the app cannot be signed using the original certificate(s) again because the signing info are kept private by the actual developer. <span class="pplri8t-">How do you verify these signatures?</span> Using checksums. Checksums are generated from the certificates themselves. If the developer supplies the checksums, you can match the checksums using the different checksums generated in the <span class="pplb8t-">Signatures</span> tab. For example, if you have downloaded App Manager from Github, Telegram Channel or IzzyOnDroid’s repo, you can verify whether the app is actually released by me by simply matching the following <span class="pplri8t-">SHA256</span> checksum with the one displayed in this tab:</p>
<div class="fancyvrb" id="fancyvrb2"><a id="x1-53002r1"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> 320c0c0fe8cef873f2b554cb88c837f1512589dcced50c5b25c43c04596760ab</span></div>
<!--l. 437-->
<p class="indent">There are three types of checksums displayed there: <span class="pplri8t-">MD5</span>, <span class="pplri8t-">SHA1</span> and <span class="pplri8t-">SHA256</span>.</p>
<div class="mdframed" id="mdframed-11"><!--l. 439-->
<p class="noindent"><span class="pplbi8t-">Caution.</span> It is recommended that you verify signing info using only <span class="pplri8t-">SHA256</span> checksums or all three of them. DO NOT rely on <span class="pplri8t-">MD5</span> or <span class="pplri8t-">SHA1</span> checksums only as they are known to generate the same results for multiple certificates.</p>

</div>
<h4 class="subsectionHead"><span class="titlemark">2.2.6</span> <a href="#QQ2-1-54" id="x1-540002.2.6">Other Tabs</a></h4>
<!--l. 446-->
<p class="noindent">Other tabs list android manifest components such as features, configurations, shared libraries, and signatures. A complete description about these tabs will be available soon.</p>
<h3 class="sectionHead"><span class="titlemark">2.3</span> <a href="#QQ2-1-55" id="x1-550002.3">1-Click Ops Page</a></h3>
<!--l. 2-->
<p class="noindent"><span class="paragraphHead"><a href="#x1-1120002.6.9.2" id="x1-1120002.6.9.2">Export</a></span> Export blocking rules for all apps configured within App Manager. This may include <a href="#x1-1630004.1.1">app components</a>, app ops and permissions based on the options selected in the multi-choice options. </p>

<h4 class="subsectionHead"><span class="titlemark">2.3.1</span> <a href="#QQ2-1-56" id="x1-560002.3.1">Block/Unblock Trackers</a></h4>
<!--l. 6-->
<p class="noindent">This option can be used to block or unblock the ad/tracker components from the installed apps. After you click on this option, you will be asked to select if AM will list trackers from all apps or only from the user apps. Novice users should avoid blocking trackers from the system apps in order to avoid consequences. After that, a multi-choice dialog box will appear where you can deselect the apps you want to exclude from this operation. Clicking <span class="pplri8t-">block</span> or <span class="pplri8t-">unblock</span> applies the changes immediately.</p>
<div class="mdframed" id="mdframed-12"><!--l. 12-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> Certain apps may not function as expected after applying the blocking. If that is the case, remove blocking rules all at once or one by one in the component tabs of the corresponding <a href="#x1-340002.2">App Details page</a>.</p>

</div>
<!--l. 17-->
<p class="indent"></p>
<div class="am-see-also"><span class="pplri8t-">See also:</span> <span class="pplri8c-">•</span> <a href="#x1-1700004.1.8"><span class="pplri8t-">How to unblock the tracker components blocked using 1-Click Ops or Batch</span> <span class="pplri8t-">Ops?</span></a> <span class="pplri8c-">•</span> <a href="#x1-480002.2.3.5"><span class="pplri8t-">App Details Page: Blocking Trackers</span></a> 

</div>
<h4 class="subsectionHead"><span class="titlemark">2.3.2</span> <a href="#QQ2-1-57" id="x1-570002.3.2">Block Components…</a></h4>
<!--l. 23-->
<p class="noindent">This option can be used to block certain app components denoted by the signatures. App signature is the full name or partial name of the components. For safety, it is recommended that you should add a <span class="ectt-1000">.</span> (dot) at the end of each partial signature name as the algorithm used here chooses all matched components in a greedy manner. You can insert more than one signature in which case all signatures have to be separated by spaces. Similar to the option above, there is an option to apply blocking to system apps as well.</p>
<div class="mdframed" id="mdframed-13"><!--l. 29-->
<p class="noindent"><span class="pplbi8t-">Caution.</span> If you are not aware of the consequences of blocking app components by signature(s), you should avoid using this setting as it may result in boot loop or soft brick, and you may have to apply factory reset in order to use your OS.</p>

</div>
<h4 class="subsectionHead"><span class="titlemark">2.3.3</span> <a href="#QQ2-1-58" id="x1-580002.3.3">Set Mode for App Ops…</a></h4>
<!--l. 35-->
<p class="noindent">This option can be used to configure certain <a href="#x1-247000C">app operations</a> of all or selected apps. You can insert more than one app op constants separated by spaces. It is not always possible to know in advance about all the app op constants as they vary from device to device and from OS to OS. To find the desired app op constant, browse the <span class="pplri8t-">App Ops</span> tab in the <a href="#x1-340002.2">App Details page</a>. The constants are integers closed inside brackets next to each app op name. You can also use the app op names. You also have to select one of the <a href="#x1-252000C.3.2">modes</a> that will be applied against the app ops.</p>
<div class="mdframed" id="mdframed-14"><!--l. 43-->
<p class="noindent"><span class="pplbi8t-">Caution.</span> Unless you are well-informed about app ops and the consequences of blocking them, you should avoid using this feature as it may result in boot loop or soft brick, and you may have to apply factory reset in order to use your OS.</p>

</div>
<h4 class="subsectionHead"><span class="titlemark">2.3.4</span> <a href="#QQ2-1-59" id="x1-590002.3.4">Back up</a></h4>
<!--l. 49-->
<p class="noindent">1-Click options for back up. As a precaution, it lists the affected backups before performing any operation. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-600002.3.4" id="x1-600002.3.4">Back up all apps.</a></span> Back up all the installed apps. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-610002.3.4" id="x1-610002.3.4">Redo existing backups.</a></span> Back up all the installed apps that have a previous backup. </p>
<p class="noindent">Clicking on the first item (i.e. number of classes) opens a new page containing a list of tracker classes for the app. All classes can also be viewed by clicking on the <span class="pplri8t-">Toggle Class Listing</span> menu. A sneak-peek of each class can be viewed by simply clicking on any class item. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-630002.3.4" id="x1-630002.3.4">Verify and redo backups.</a></span> Verify the recently made backups of the installed apps and redo backup if necessary. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-640002.3.4" id="x1-640002.3.4">Back up apps with changes.</a></span> If an app has changed since the last backup, redo backup for it. It checks a number of indices including app version, last update date, last launch date, integrity and file hashes. Directory hashes are taken during the back up and stored in a database. On running this operation, new hashes are taken and compared with the ones kept in the database. </p>

<h4 class="subsectionHead"><span class="titlemark">2.3.5</span> <a href="#QQ2-1-65" id="x1-650002.3.5">Restore</a></h4>
<!--l. 66-->
<p class="noindent">The second item lists the number of trackers along with their names. Clicking on the item displays a dialog containing the name of trackers, matched signatures, and the number of classes against each signature. Some tracker names may have <sup><span class="pplr7t-x-x-76">2</span></sup> prefix which indicates that the trackers are in the <a href="https://etip.exodus-privacy.eu.org">ETIP</a> stand-by list i.e. whether they are actual trackers is still being investigated. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-660002.3.5" id="x1-660002.3.5">Restore all apps.</a></span> Restore <span class="pplri8t-">base backup</span> of all the backed up apps. </p>
<p class="noindent">Value of various app ops depend on their parent app ops. Therefore, when you allow/deny an app op, the parent of the app op gets modified. This fixes the issues some users have been complaining regarding some app ops that couldn’t be changed. </p>
<p class="noindent">The signature tab is improved to support localization. It also displays multiple checksums for a signature.</p>
<h3 class="sectionHead"><span class="titlemark">2.4</span> <a href="#QQ2-1-69" id="x1-690002.4">Profiles Page</a></h3>
<!--l. 2-->
<p class="noindent">At the bottom of the page, there is a special item denoting the number of missing signatures (i.e. missing classes). The missing signatures are the ones that AM has failed to match against any known libraries. The number itself has no particular meaning as many libraries contain hundreds of classes, but clicking on the item will bring up a dialog containing the signatures which is helpful in inspecting the missing signatures. <span class="pplb8t-">This feature is only intended for people who know what a</span> <span class="pplb8t-">missing signature is and what to do with it, average users should just ignore</span> <span class="pplb8t-">it.</span> </p>

<h4 class="subsectionHead"><span class="titlemark">2.4.1</span> <a href="#QQ2-1-70" id="x1-700002.4.1">Options Menu</a></h4>
<!--l. 8-->
<p class="noindent">There are two options menu in this page. The three dots menu at the top-right offers two options such as <span class="pplri8t-">presets</span> and <span class="pplri8t-">import</span>.</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">Presets.</span> Presets option lists a number of built-in profiles that can be used as a starting point. The profiles are generated from the project <a href="https://gitlab.com/W1nst0n/universal-android-debloater">Universal Android Debloater</a>.<br class="newline" /> <span class="pplri8t-">See also:</span> <a href="#x1-1810004.3.5"><span class="pplri8t-">FAQ: What are bloatware and how to remove them?</span></a></li>
<li class="itemize"><span class="pplb8t-">Import.</span> This option can be used to import an existing profile.</li>
</ul>
<!--l. 19-->
<p class="indent">Another options menu appears when you long click on any profile. They have options such as–</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">Apply now</span><span class="pplb8t-">….</span> This option can be used to apply the profile directly. When clicked, a dialog will be displayed where you can select a <a href="#x1-760002.5.3.2">profile state</a>. On selecting one of the options, the profile will be applied immediately.</li>
<li class="itemize"><span class="pplb8t-">Delete.</span> Clicking on delete will remove the profile immediately without any warning.</li>
<li class="itemize"><span class="pplb8t-">Duplicate.</span> This option can be used to duplicate the profile. When clicked, an input box will be displayed where you can set the profile name. If you click “OK”, a new profile will be created and the <a href="#x1-710002.5">profile page</a> will be loaded. The profile will not be saved until you save it manually.</li>
<li class="itemize"><span class="pplb8t-">Export.</span> Export the profile to an external storage. Profile exported this way can be imported using the <span class="pplri8t-">import</span> option in the three dots menu.</li>
<li class="itemize"><span class="pplb8t-">Create shortcut.</span> This option can be used to create a shortcut for the profile. When clicked, there will be two options: <span class="pplri8t-">Simple</span> and <span class="pplri8t-">Advanced</span>. The latter option allows you to set the profile state before applying it while the former option use the default state that was configured when the profile was last saved.</li>
</ul>
<!--l. 1-->

<h3 class="sectionHead"><span class="titlemark">2.5</span> <a href="#QQ2-1-71" id="x1-710002.5">Profile Page</a></h3>
<!--l. 2-->
<p class="noindent">Action specifies the generic action to perform such as <span class="ectt-1000">android.intent.action.VIEW</span>. Applications often declare the relevant actions in the Manifest file to catch the desired Intents. The action is particularly useful for broadcast Intent where it plays a vital rule. In other cases, it works as an initial way to filter out relevant app components. Generic actions such as <span class="ectt-1000">android.intent.action.VIEW</span> and <span class="ectt-1000">android.intent.action.SEND</span> are widely used by apps. So, setting this alone may match many app components.</p>
<div class="mdframed" id="mdframed-15"><!--l. 4-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> When you apply a profile, if some packages do not match the criteria, they will simply be ignored.</p>

</div>
<h4 class="subsectionHead"><span class="titlemark">2.5.1</span> <a href="#QQ2-1-72" id="x1-720002.5.1">Options Menu</a></h4>
<!--l. 9-->
<p class="noindent">The three dots menu on the top-right corner opens the options-menu. It contains several options such as–</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">Apply.</span> This option can be used to apply the profile. When clicked, a dialog will be displayed where you can select a <a href="#x1-760002.5.3.2">profile state</a>. On selecting one of the options, the profile will be applied immediately.</li>
<li class="itemize"><span class="pplb8t-">Save.</span> Allows you to save the profile.
<div class="mdframed" id="mdframed-16"><!--l. 15-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> Changes are never saved automatically. You have to save them manually from here.</p>

</div>
</li>
<li class="itemize"><span class="pplb8t-">Discard.</span> Discard any modifications made since the last save.</li>
<li class="itemize"><span class="pplb8t-">Delete.</span> Clicking on delete will remove the profile immediately without any warning.</li>
<li class="itemize"><span class="pplb8t-">Duplicate.</span> This option can be used to duplicate the profile. When clicked, an input box will be displayed where you can set the profile name. If you click “OK”, a new profile will be created, and the page will be reloaded. The profile will not be saved until you save it manually.</li>
<li class="itemize"><span class="pplb8t-">Create shortcut.</span> This option can be used to create a shortcut for the profile. When clicked, there will be two options: <span class="pplri8t-">Simple</span> and <span class="pplri8t-">Advanced</span>. The latter option allows you to set the profile state before applying it while the former option uses the default state that was configured when the profile was last saved.</li>
</ul>
<h4 class="subsectionHead"><span class="titlemark">2.5.2</span> <a href="#QQ2-1-73" id="x1-730002.5.2">Apps Tab</a></h4>
<!--l. 29-->
<p class="noindent">Sadly, no. ADB has limited <a href="https://github.com/aosp-mirror/platform_frameworks_base/blob/master/packages/Shell/AndroidManifest.xml">permissions</a> and controlling application components is not one of them. </p>

<h4 class="subsectionHead"><span class="titlemark">2.5.3</span> <a href="#QQ2-1-74" id="x1-740002.5.3">Configurations Tab</a></h4>
<!--l. 34-->
<p class="noindent">Most of the features supported by ADB mode are enabled by default once ADB support is detected by AM. These include disable, force-stop, clear data, grant/revoke app ops and permissions. You can also install applications without any prompt and view <a href="#x1-280002.1.5.6">running apps/processes</a>. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.1</span> <a href="#QQ2-1-75" id="x1-750002.5.3.1">Comment</a></h5>
<!--l. 37-->
<p class="noindent">List all the activity components that matches the Intent. This is internally determined by the system (rather than AM). The launch button next to each component can be used to launch them directly from AM. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.2</span> <a href="#QQ2-1-76" id="x1-760002.5.3.2">State</a></h5>
<!--l. 41-->
<p class="noindent">Reset the Intent to its initial state. This may not always work as expected. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.3</span> <a href="#QQ2-1-77" id="x1-770002.5.3.3">Users</a></h5>
<!--l. 46-->
<p class="noindent">Resend the edited Intent to the destination app. This may open a list of apps where you have to select the desired app. The result received from the target app will be sent to the source app. As a result the source app will not know if there was a man-in-the-middle. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.4</span> <a href="#QQ2-1-78" id="x1-780002.5.3.4">Components</a></h5>
<!--l. 49-->
<p class="noindent">This behaves the same way as the <a href="#x1-570002.3.2">Block Components…</a> option does in the 1-Click Ops page. However, this only applies for the selected packages. If the <a href="#x1-760002.5.3.2">state</a> is <span class="pplri8t-">on</span>, the components will be blocked, and if the state is <span class="pplri8t-">off</span>, the components will be unblocked. The option can be disabled (regardless of the inserted values) by clicking on the <span class="pplri8t-">disabled</span> button on the input dialog. </p>
<p class="noindent"><span class="pplri8t-">See also:</span> <a href="#x1-1630004.1.1"><span class="pplri8t-">What are the app components?</span></a> </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.5</span> <a href="#QQ2-1-79" id="x1-790002.5.3.5">App Ops</a></h5>
<!--l. 58-->
<p class="noindent">This behaves the same way as the <a href="#x1-580002.3.3">Set Mode for App Ops…</a> option does in the 1-Click Ops page. However, this only applies for the selected packages. If the <a href="#x1-760002.5.3.2">state</a> is <span class="pplri8t-">on</span>, the app ops will be denied (ie. ignored), and if the state is <span class="pplri8t-">off</span>, the app ops will be allowed. The option can be disabled (regardless of the inserted values) by clicking on the <span class="pplri8t-">disabled</span> button on the input dialog. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.6</span> <a href="#QQ2-1-80" id="x1-800002.5.3.6">Permissions</a></h5>
<!--l. 65-->
<p class="noindent">This option can be used to grant or revoke certain permissions from the selected packages. Like others above, permissions must be separated by spaces. If the <a href="#x1-760002.5.3.2">state</a> is <span class="pplri8t-">on</span>, the permissions will be revoked, and if the state is <span class="pplri8t-">off</span>, the permissions will be allowed. The option can be disabled (regardless of the inserted values) by clicking on the <span class="pplri8t-">disabled</span> button on the input dialog. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.7</span> <a href="#QQ2-1-81" id="x1-810002.5.3.7">Backup/Restore</a></h5>
<!--l. 71-->
<p class="noindent">This option can be used to take a backup of the selected apps and its data or restore them. There two options available there: <span class="pplri8t-">Backup options</span> and <span class="pplri8t-">backup</span> <span class="pplri8t-">name</span>.</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">Backup options.</span> Same as the <a href="#x1-1570003.2.2">backup options</a> of the backup/restore feature. If not set, the default options will be used.</li>
<li class="itemize"><span class="pplb8t-">Backup name.</span> Set a custom name for the backup. If the backup name is set, each time a backup is made, it will be given a unique name with backup-name as the suffix. This behaviour will be fixed in a future release. Leave this field empty for regular or “base” backup (also, make sure not to enable <span class="pplri8t-">backup multiple</span> in the backup options).</li>
</ul>
<!--l. 82-->
<p class="indent">If the <a href="#x1-760002.5.3.2">state</a> is <span class="pplri8t-">on</span>, the packages will be backed up, and if the state is <span class="pplri8t-">off</span>, the packages will be restored. The option can be disabled by clicking on the <span class="pplri8t-">disabled</span> button on the input dialog. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.8</span> <a href="#QQ2-1-82" id="x1-820002.5.3.8">Export Blocking Rules</a></h5>
<!--l. 87-->
<p class="noindent">This option allows you to export blocking rules.</p>
<div class="mdframed" id="mdframed-17"><!--l. 89-->
<p class="noindent"><span class="pplbi8t-">Danger.</span> This option is not yet implemented.</p>

</div>
<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.9</span> <a href="#QQ2-1-83" id="x1-830002.5.3.9">Disable</a></h5>
<!--l. 94-->
<p class="noindent">Enables/disables the selected packages depending on the <a href="#x1-760002.5.3.2">state</a>. If the state is <span class="pplri8t-">on</span>, the packages will be disabled, and if the state is <span class="pplri8t-">off</span>, the packages will be enabled. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.10</span> <a href="#QQ2-1-84" id="x1-840002.5.3.10">Force-stop</a></h5>
<!--l. 98-->
<p class="noindent">Allows the selected packages to be force-stopped. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.11</span> <a href="#QQ2-1-85" id="x1-850002.5.3.11">Clear Cache</a></h5>
<!--l. 101-->
<p class="noindent">Enables clearing cache for the selected packages. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.12</span> <a href="#QQ2-1-86" id="x1-860002.5.3.12">Clear Data</a></h5>
<!--l. 104-->
<p class="noindent">Enables clearing data for the selected packages. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.13</span> <a href="#QQ2-1-87" id="x1-870002.5.3.13">Block Trackers</a></h5>
<!--l. 107-->
<p class="noindent">Enables blocking/unblocking of the tracker components from the selected packages depending on the <a href="#x1-760002.5.3.2">state</a>. If the state is <span class="pplri8t-">on</span>, the trackers will be blocked, and if the state is <span class="pplri8t-">off</span>, the trackers will be unblocked. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.5.3.14</span> <a href="#QQ2-1-88" id="x1-880002.5.3.14">Save APK</a></h5>
<!--l. 112-->
<p class="noindent">Enables saving APK files at <span class="ectt-1000">AppManager/apks</span> for the selected packages.</p>
<h3 class="sectionHead"><span class="titlemark">2.6</span> <a href="#QQ2-1-89" id="x1-890002.6">Settings Page</a></h3>
<!--l. 2-->
<p class="noindent">Settings can be used to customise the behaviour of the app. </p>

<h4 class="subsectionHead"><span class="titlemark">2.6.1</span> <a href="#QQ2-1-90" id="x1-900002.6.1">Language</a></h4>
<!--l. 5-->
<p class="noindent">Configure in-app language. App Manager currently supports 19 (nineteen) languages. </p>

<h4 class="subsectionHead"><span class="titlemark">2.6.2</span> <a href="#QQ2-1-91" id="x1-910002.6.2">App Theme</a></h4>
<!--l. 9-->
<p class="noindent">Configure in-app theme. </p>

<h4 class="subsectionHead"><span class="titlemark">2.6.3</span> <a href="#QQ2-1-92" id="x1-920002.6.3">Screen Lock</a></h4>
<!--l. 12-->
<p class="noindent">Lock App Manager using Android screen lock provided a screen lock is configured. </p>

<h4 class="subsectionHead"><span class="titlemark">2.6.4</span> <a href="#QQ2-1-93" id="x1-930002.6.4">Mode of Operation</a></h4>
<!--l. 15-->
<p class="noindent">You can select one of the four options:</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">Auto.</span> Let AM decide the suitable option for you. Although this is the default option, it may cause problems in some devices.</li>
<li class="itemize"><span class="pplb8t-">Root.</span> Select root mode. By default, AM requests root permission if root is detected but hasn’t been granted. If this option is selected, AM will run in root mode even if root is unavailable or denied. This may cause crashes or freezing issues, therefore, shouldn’t be enabled if root is unavailable.</li>
<li class="itemize"><span class="pplb8t-">ADB over TCP.</span> Enable <a href="#x1-1360003.1">ADB over TCP</a> mode. AM may hang indefinitely if ADB over TCP is not enabled.</li>
<li class="itemize"><span class="pplb8t-">No-root.</span> AM runs in no-root mode. AM performs better if this is enabled but all the root/ADB features will be disabled.</li>
</ul>
<!--l. 32-->

<h4 class="subsectionHead"><span class="titlemark">2.6.5</span> <a href="#QQ2-1-94" id="x1-940002.6.5">Enable/Disable Features</a></h4>
<!--l. 33-->
<p class="noindent">Enable or disable certain features in App Manager, such as</p>
<ul class="itemize1">
<li class="itemize">Interceptor</li>
<li class="itemize">Manifest viewer</li>
<li class="itemize">Scanner</li>
<li class="itemize">Package installer</li>
<li class="itemize">Usage access: With this option turned off, App Manager will never ask for the <span class="pplri8t-">Usage Access</span> permission.</li>
<li class="itemize">Log viewer</li>
</ul>
<!--l. 44-->

<h4 class="subsectionHead"><span class="titlemark">2.6.6</span> <a href="#QQ2-1-95" id="x1-950002.6.6">APK Signing</a></h4>
<!--l. 46-->

<h5 class="subsubsectionHead"><span class="titlemark">2.6.6.1</span> <a href="#QQ2-1-96" id="x1-960002.6.6.1">Signature Schemes</a></h5>
<!--l. 47-->
<p class="noindent">Select the <a href="https://source.android.com/security/apksigning">signature schemes</a> to use. It is recommended that you use at least v1 and v2 signature schemes. Use the <span class="pplri8t-">Reset to Default</span> button in case you’re confused. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.6.6.2</span> <a href="#QQ2-1-97" id="x1-970002.6.6.2">Signing Key</a></h5>
<!--l. 52-->
<p class="noindent">Configure custom signing key for signing APK files. Keys from an existing KeyStore can be imported to App Manager, or a new key can be generated.</p>
<div class="mdframed" id="mdframed-18"><!--l. 55-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> App Manager maintains a KeyStore where the keys used within the app are stored. The password for the keystore will be asked when necessary. Be sure to store the password in a safe place, otherwise the KeyStore cannot be recovered when necessary.</p>

</div>
<h4 class="subsectionHead"><span class="titlemark">2.6.7</span> <a href="#QQ2-1-98" id="x1-980002.6.7">Installer</a></h4>
<!--l. 64-->

<h5 class="subsubsectionHead"><span class="titlemark">2.6.7.1</span> <a href="#QQ2-1-99" id="x1-990002.6.7.1">Show users in installer</a></h5>
<!--l. 65-->
<p class="noindent">For root/ADB users, a list of users will be displayed before installing the app. The app will be installed only for the specified user (or all users if selected). </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.6.7.2</span> <a href="#QQ2-1-100" id="x1-1000002.6.7.2">Sign APK</a></h5>
<!--l. 69-->
<p class="noindent">Whether to sign the APK files before installing the app. Visit <a href="#x1-950002.6.6">APK signing</a> section to configure signing. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.6.7.3</span> <a href="#QQ2-1-101" id="x1-1010002.6.7.3">Install location</a></h5>
<!--l. 73-->
<p class="noindent">Choose APK install location. This can be one of <span class="pplri8t-">auto</span>, <span class="pplri8t-">internal only</span> and <span class="pplri8t-">prefer external</span>. In newer Android versions, the last option may not always install the app in the external storage. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.6.7.4</span> <a href="#QQ2-1-102" id="x1-1020002.6.7.4">Installer App</a></h5>
<!--l. 78-->
<p class="noindent">Select the installer app, useful for some apps which explicitly checks for their installer. This only works for root/ADB users. </p>

<h4 class="subsectionHead"><span class="titlemark">2.6.8</span> <a href="#QQ2-1-103" id="x1-1030002.6.8">Back up/Restore</a></h4>
<!--l. 83-->
<p class="noindent">Settings related to <a href="#x1-1550003.2">back up/restore</a>. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.6.8.1</span> <a href="#QQ2-1-104" id="x1-1040002.6.8.1">Compression method</a></h5>
<!--l. 86-->
<p class="noindent">Set which compression method to be used during backups. App Manager supports GZip and BZip2 compression methods, GZip being the default compression method. It doesn’t affect the restore of an existing backup. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.6.8.2</span> <a href="#QQ2-1-105" id="x1-1050002.6.8.2">Backup Options</a></h5>
<!--l. 91-->
<p class="noindent">Customise the back up/restore dialog. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.6.8.3</span> <a href="#QQ2-1-106" id="x1-1060002.6.8.3">Backup apps with Android KeyStore</a></h5>
<!--l. 94-->
<p class="noindent">Allow backup of apps that has entries in the Android KeyStore (disabled by default). Some apps (such as Signal) may crash if restored. KeyStore backup also doesn’t work from Android 9 but still kept as many apps having KeyStore can be restored without problem. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.6.8.4</span> <a href="#QQ2-1-107" id="x1-1070002.6.8.4">Encryption</a></h5>
<!--l. 99-->
<p class="noindent">Set an encryption method for the backups. App Manager currently supports OpenPGP (via <a href="https://f-droid.org/packages/org.sufficientlysecure.keychain/">OpenKeyChain</a>), AES and RSA (hybrid encryption with AES). Like <a href="#x1-950002.6.6">APK signing</a>, The AES and RSA keys are stored in the KeyStore and can be imported from other KeyStores. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.6.8.5</span> <a href="#QQ2-1-108" id="x1-1080002.6.8.5">Backup Volume</a></h5>
<!--l. 107-->
<p class="noindent">Lets you select the storage where the backups will be stored.</p>
<div class="mdframed" id="mdframed-19"><!--l. 109-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> The backup volume only specifies the storage, not the path. Backups are stored in <span class="ectt-1000">AppManager</span> folder inside the storage path. This is also where logs and exported APK files are saved.</p>

</div>
<h4 class="subsectionHead"><span class="titlemark">2.6.9</span> <a href="#QQ2-1-109" id="x1-1090002.6.9">Rules</a></h4>
<!--l. 117-->

<h5 class="subsubsectionHead"><span class="titlemark">2.6.9.1</span> <a href="#QQ2-1-110" id="x1-1100002.6.9.1">Instant Component Blocking</a></h5>
<!--l. 118-->
<p class="noindent">By default, blocking rules are not applied unless they are applied explicitly in <a href="#x1-340002.2">the App Details page</a> for any package. Upon enabling this option, all (old and new) rules are applied immediately for all apps without explicitly enabling blocking for an app.</p>
<div class="mdframed" id="mdframed-20"><!--l. 123-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> Enabling this setting may have some unintended consequences. For instance, the rules that are not completely removed will be applied again. So, proceed with caution. This option should be kept disabled if not required for some reasons.</p>

</div>
<!--l. 130-->
<p class="noindent"><span class="pplri8t-">See also:</span> <a href="#x1-1680004.1.6"><span class="pplri8t-">FAQ: What is instant component blocking?</span></a></p>
<h5 class="subsubsectionHead"><span class="titlemark">2.6.9.2</span> <a href="#QQ2-1-111" id="x1-1110002.6.9.2">Import/Export Blocking Rules</a></h5>
<!--l. 133-->
<p class="noindent">A complete description of the backup options is given below: </p>
<p class="noindent"><span class="pplri8t-">See also:</span> <a href="#x1-183000A.1"><span class="pplri8t-">Rules Specification</span></a> </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-1120002.6.9.2" id="x1-1120002.6.9.2">Export</a></span> Export blocking rules for all apps configured within App Manager. This may include <a href="#x1-1630004.1.1">app components</a>, app ops and permissions based on the options selected in the multi-choice options. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-1130002.6.9.2" id="x1-1130002.6.9.2">Import</a></span> Import previously exported blocking rules from App Manager. Similar to export, this may include <a href="#x1-1630004.1.1">app components</a>, app ops and permissions based on the options selected in the multi-choice options. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-1140002.6.9.2" id="x1-1140002.6.9.2">Import Existing Rules</a></span> <a id="likesection.17"></a> Add components disabled by other apps to App Manager. App Manager only keeps track of component disabled within App Manager. If you use other tools to block app components, you can use this tools to import these disabled components. Clicking on this option triggers a search for disabled components and will list apps with components disabled by user. For safety, all the apps are unselected by default. You can manually select the apps in the list and re-apply the blocking through App Manager.</p>
<div class="mdframed" id="mdframed-21"><!--l. 160-->
<p class="noindent"><span class="pplbi8t-">Caution.</span> Be careful when using this tool as there can be many false positives. Choose only the apps that you are certain about.</p>

</div>
<!--l. 165-->
<p class="noindent"><span class="paragraphHead"><a href="#x1-1150002.6.9.2" id="x1-1150002.6.9.2">Import from Watt</a></span> Import configuration files from <a href="https://github.com/tuyafeng/Watt">Watt</a>, each file containing rules for a single package and file name being the name of the package with <span class="ectt-1000">.xml</span> extension.</p>
<div class="mdframed" id="mdframed-22"><!--l. 168-->
<p class="noindent"><span class="pplbi8t-">Tip.</span> Location of configuration files in Watt: <span class="ectt-1000">/sdcard/Android/data/com.tuyafeng.watt/files/ifw</span></p>

</div>
<!--l. 172-->
<p class="noindent"><span class="paragraphHead"><a href="#x1-1160002.6.9.2" id="x1-1160002.6.9.2">Import from Blocker</a></span> Import blocking rules from <a href="https://github.com/lihenggui/blocker">Blocker</a>, each file containing rules for a single package. These files have a <span class="ectt-1000">.json</span> extension. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.6.9.3</span> <a href="#QQ2-1-117" id="x1-1170002.6.9.3">Remove all rules</a></h5>
<!--l. 177-->
<p class="noindent">One-click option to remove all rules configured within App Manager. This will enable all blocked components, app ops will be set to their default values and permissions will be granted. </p>

<h4 class="subsectionHead"><span class="titlemark">2.6.10</span> <a href="#QQ2-1-118" id="x1-1180002.6.10">Import/Export Keystore</a></h4>
<!--l. 182-->
<p class="noindent">Import or export the KeyStore used by App Manager. This is a Bouncy Castle KeyStore with <span class="ectt-1000">bks</span> extension. Therefore, other KeyStore such as Java KeyStore (JKS) or PKCS #12 are not supported. If you need to import a key from these KeyStores, use the relevant options outlined above. </p>

<h4 class="subsectionHead"><span class="titlemark">2.6.11</span> <a href="#QQ2-1-119" id="x1-1190002.6.11">About the device</a></h4>
<!--l. 188-->
<p class="noindent">Display Android version, security, CPU, GPU, battery, memory, screen, languages, user info, etc.</p>
<h3 class="sectionHead"><span class="titlemark">2.7</span> <a href="#QQ2-1-120" id="x1-1200002.7">Scanner Page</a></h3>
<!--l. 2-->
<p class="noindent"><span class="pplb8t-">Scanner page</span> appears after clicking on the <span class="pplri8t-">scanner</span> button in the <a href="#x1-360002.2.2">App Info tab</a>. External APK files can also be opened for scanning from file managers, web browsers, etc. </p>
<p class="indent">It scans for trackers and libraries, and displays the number of trackers and libraries as a summary. It also displays checksums of the APK file as well as the signing certificate(s).</p>
<div class="mdframed" id="mdframed-23"><!--l. 8-->
<p class="noindent"><span class="pplbi8t-">Disclaimer.</span> AM only scans an app statically without prejudice. The app may provide the options for opting out, or in some cases, certain features of the tracker may not be used at all by the app (e.g. F-Droid), or some apps may simply use them as placeholders to prevent the breaking of certain features (e.g. Fennec F-Droid). <span class="pplb8t-">The intention of the scanner is to give you an idea about what</span> <span class="pplb8t-">the APK might contain. It should be taken as an initial step for further</span> <span class="pplb8t-">investigations.</span></p>

</div>
<!--l. 16-->
<p class="indent">Clicking on the first item (i.e. number of classes) opens a new page containing a list of tracker classes for the app. All classes can also be viewed by clicking on the <span class="pplri8t-">Toggle Class Listing</span> menu. A sneak-peek of each class can be viewed by simply clicking on any class item.</p>
<div class="mdframed" id="mdframed-24"><!--l. 20-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> Due to various limitations, it is not possible to scan all the components of an APK file. This is especially true if an APK is highly obfuscated. The scanner also does not check strings (or website signatures).</p>

</div>
<!--l. 25-->
<p class="indent">The second item lists the number of trackers along with their names. Clicking on the item displays a dialog containing the name of trackers, matched signatures, and the number of classes against each signature. Some tracker names may have <sup><span class="pplr7t-x-x-76">2</span></sup> prefix which indicates that the trackers are in the <a href="https://etip.exodus-privacy.eu.org">ETIP</a> stand-by list i.e. whether they are actual trackers is still being investigated. 
</p>
<p class="indent">The signature tab is improved to support localization. It also displays multiple checksums for a signature. </p>
<p class="noindent">Even IFW has some limitations which are primarily applicable for the system apps:</p>
<h4 class="subsectionHead"><span class="titlemark">2.7.1</span> <a href="#QQ2-1-121" id="x1-1210002.7.1">Missing Signatures</a></h4>
<!--l. 36-->
<p class="noindent">At the bottom of the page, there is a special item denoting the number of missing signatures (i.e. missing classes). The missing signatures are the ones that AM has failed to match against any known libraries. The number itself has no particular meaning as many libraries contain hundreds of classes, but clicking on the item will bring up a dialog containing the signatures which is helpful in inspecting the missing signatures. <span class="pplb8t-">This feature is only intended for people who know what a</span> <span class="pplb8t-">missing signature is and what to do with it, average users should just ignore</span> <span class="pplb8t-">it.</span></p>
<h3 class="sectionHead"><span class="titlemark">2.8</span> <a href="#QQ2-1-122" id="x1-1220002.8">Interceptor Page</a></h3>
<!--l. 2-->
<p class="noindent">Interceptor can be used to intercept communication between apps using <span class="ectt-1000">Intent</span>. It works as a man-in-the-middle between the source and the destination apps. It offers a feature-complete user interface for editing <span class="ectt-1000">Intent</span>s.</p>
<div class="mdframed" id="mdframed-25"><!--l. 5-->
<p class="noindent"><span class="pplbi8t-">Info.</span> Development of interceptor is still in progress. It can only intercept activities for now.</p>

</div>
<div class="mdframed" id="mdframed-26"><!--l. 9-->
<p class="noindent"><span class="pplbi8t-">Warning.</span> Interceptor only works for <span class="pplri8t-">implicit</span> intents where the <a href="#x1-1630004.1.1">app component</a> isn’t specified.</p>

</div>
<!--l. 14-->
<p class="indent"></p>
<div class="am-see-also"><span class="pplri8t-">See also:</span> <span class="pplri8c-">•</span> <a href="https://developer.android.com/guide/components/intents-common"><span class="pplri8t-">Common Intents</span></a> <span class="pplri8c-">•</span> <a href="https://developer.android.com/guide/components/intents-filters"><span class="pplri8t-">Intents and Intent Filters</span></a> 

</div>
<h4 class="subsectionHead"><span class="titlemark">2.8.1</span> <a href="#QQ2-1-123" id="x1-1230002.8.1">Intent Filters</a></h4>
<!--l. 20-->
<p class="noindent">Intent filters are used by the apps to specify which tasks they are able to perform or which tasks they are going to perform using other apps. For example, when you’re opening a PDF file using a file manager, the file manager will try to find which apps to open the PDF with. To find the right applications, the file manager will create an Intent with filters such as MIME type and ask the system to retrieve the matched applications that is able to open this filter. The system will search through the Manifest of the installed applications to match the filter and list the app components that are able to open this filter (in our case the PDF). At this, either the file manager will open the desired app component itself or use a system provided option to open it. If multiple app components are able to open it and no default is set, you may get a prompt where you have to choose the right app component. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.8.1.1</span> <a href="#QQ2-1-124" id="x1-1240002.8.1.1">Action</a></h5>
<!--l. 30-->
<p class="noindent">Action specifies the generic action to perform such as <span class="ectt-1000">android.intent.action.VIEW</span>. Applications often declare the relevant actions in the Manifest file to catch the desired Intents. The action is particularly useful for broadcast Intent where it plays a vital rule. In other cases, it works as an initial way to filter out relevant app components. Generic actions such as <span class="ectt-1000">android.intent.action.VIEW</span> and <span class="ectt-1000">android.intent.action.SEND</span> are widely used by apps. So, setting this alone may match many app components. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.8.1.2</span> <a href="#QQ2-1-125" id="x1-1250002.8.1.2">Data</a></h5>
<!--l. 37-->
<p class="noindent">If you have <span class="pplb8t-">Google Play Services</span> (<span class="ectt-1000">com.google.android.gms</span>) installed, unblocking the following <a href="#x1-430002.2.3.2">services</a> may fix certain crashes: </p>
<p class="indent">Examples:</p>
<div class="fancyvrb" id="fancyvrb3"><a id="x1-125002r1"></a><span class="ectt-1000">http://search.disroot.org/?q=URI%20in%20Android%20scheme&amp;categories=general&amp;language=en-US</span><br class="fancyvrb" /> <a id="x1-125004r2"></a><span class="ectt-1000">https://developer.android.com/reference/android/net/Uri</span><br class="fancyvrb" /> <a id="x1-125006r3"></a><span class="ectt-1000">file:///sdcard/AppManager.apk</span><br class="fancyvrb" /> <a id="x1-125008r4"></a><span class="ectt-1000">mailto:email@example.com</span><br class="fancyvrb" /> <a id="x1-125010r5"></a><span class="ectt-1000">content://io.github.muntashirakon.AppManager.provider/23485af89b08d87e898a90c7e/AppManager.apk</span></div>
<!--l. 51-->

<h5 class="subsubsectionHead"><span class="titlemark">2.8.1.3</span> <a href="#QQ2-1-126" id="x1-1260002.8.1.3">MIME Type</a></h5>
<!--l. 52-->
<p class="noindent">MIME type of the <a href="#x1-1250002.8.1.2">data</a>. For example, if the data field is set to <span class="ectt-1000">file:///sdcard/AppManager.apk</span>, the associated MIME type can be <span class="ectt-1000">application/vnd.android.package-archive</span>. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.8.1.4</span> <a href="#QQ2-1-127" id="x1-1270002.8.1.4">Categories</a></h5>
<!--l. 56-->
<p class="noindent">Unfortunately, yes. However, as of v2.5.13, you don’t need to keep AoT enabled all the time as it now uses a server-client mechanism to interact with the system, but you do have to keep the <span class="pplb8t-">Developer options</span> as well as <span class="pplb8t-">USB debugging</span> enabled. To do that, enable <a href="#x1-1360003.1">ADB over TCP</a> and open App Manager. You should see <span class="pplri8t-">working on</span> <span class="pplri8t-">ADB mode</span> toast message in the bottom. If you see it, you can safely stop the server. For Lineage OS or its derivative OS, you can toggle AoT without any PC or Mac by simply toggling the <span class="pplb8t-">ADB over network</span> option located just below the <span class="pplb8t-">USB debugging</span>, but the server can’t be stopped for the latter case. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.8.1.5</span> <a href="#QQ2-1-128" id="x1-1280002.8.1.5">Flags</a></h5>
<!--l. 61-->
<p class="noindent">See §<a href="#x1-1400003.1.2">3.1.2</a> in Chapter <a href="#x1-1350003">3</a>. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.8.1.6</span> <a href="#QQ2-1-129" id="x1-1290002.8.1.6">Extras</a></h5>
<!--l. 66-->
<p class="noindent"><span class="paragraphHead"><a href="#x1-245000B.4.9" id="x1-245000B.4.9">Known Limitation</a></span> Not all translations are verified yet. </p>

<h5 class="subsubsectionHead"><span class="titlemark">2.8.1.7</span> <a href="#QQ2-1-130" id="x1-1300002.8.1.7">URI</a></h5>
<!--l. 70-->
<p class="noindent">Install app only for the current user at the time of restoring backups. Support for split apks is also added. </p>

<h4 class="subsectionHead"><span class="titlemark">2.8.2</span> <a href="#QQ2-1-131" id="x1-1310002.8.2">Matching Activities</a></h4>
<!--l. 74-->
<p class="noindent">List all the activity components that matches the Intent. This is internally determined by the system (rather than AM). The launch button next to each component can be used to launch them directly from AM. </p>

<h4 class="subsectionHead"><span class="titlemark">2.8.3</span> <a href="#QQ2-1-132" id="x1-1320002.8.3">Reset to Default</a></h4>
<!--l. 78-->
<p class="noindent">Reset the Intent to its initial state. This may not always work as expected. </p>

<h4 class="subsectionHead"><span class="titlemark">2.8.4</span> <a href="#QQ2-1-133" id="x1-1330002.8.4">Send Edited Intent</a></h4>
<!--l. 81-->
<p class="noindent">Resend the edited Intent to the destination app. This may open a list of apps where you have to select the desired app. The result received from the target app will be sent to the source app. As a result the source app will not know if there was a man-in-the-middle.</p>
<h3 class="sectionHead"><span class="titlemark">2.9</span> <a href="#QQ2-1-134" id="x1-1340002.9">Shared Preferences Editor Page</a></h3>
<!--l. 2-->
<p class="noindent">Shared preferences can be edited in this page. Clicking any item on the list opens the edit dialog where the item can be edited. The floating action button on the bottom-right corner can be used to add a new item. To save or delete the file, or to discard current changes, the respective options in the menu can be used.</p>
<h2 class="chapterHead"><span class="titlemark">Chapter 3</span><br /> <a href="#QQ2-1-135" id="x1-1350003">Guides</a></h2>
<h3 class="sectionHead"><span class="titlemark">3.1</span> <a href="#QQ2-1-136" id="x1-1360003.1">ADB over TCP</a></h3>
<!--l. 2-->
<p class="noindent">Many root-only features can still be used by enabling ADB over TCP. To do that, a PC or Mac is required with Android platform-tools installed, and an Android phone with developer options & USB debugging enabled.</p>
<div class="mdframed" id="mdframed-27"><!--l. 5-->
<p class="noindent"><span class="pplbi8t-">Root users.</span> If superuser permission has been granted to App Manager, it can already execute privileged code without any problem. <span class="pplb8t-">Therefore, root users don’t</span> <span class="pplb8t-">need to enable ADB over TCP.</span> If you still want to use ADB over TCP, you must revoke superuser permission for App Manager and restart your device. You may see <span class="pplri8t-">working on ADB mode</span> message without restarting but this isn’t entirely true. The server (used as an interface between system and App Manager) is still running in root mode. This is a known issue and will be fixed in a future version of App Manager.</p>

</div>
<!--l. 13-->
<p class="noindent"><span class="pplri8t-">See also:</span> <a href="#x1-1710004.2"><span class="pplri8t-">FAQ: ADB over TCP</span></a></p>
<h4 class="subsectionHead"><span class="titlemark">3.1.1</span> <a href="#QQ2-1-137" id="x1-1370003.1.1">Enable developer options</a></h4>
<!--l. 17-->

<h5 class="subsubsectionHead"><span class="titlemark">3.1.1.1</span> <a href="#QQ2-1-138" id="x1-1380003.1.1.1">Location of developer options</a></h5>
<!--l. 18-->
<p class="noindent"><span class="pplb8t-">Developer options</span> is located in Android <span class="pplb8t-">Settings</span>, either directly near the bottom of the page (in most ROMs) or under some other settings such as <span class="pplb8t-">System</span> (Lineage OS, Asus Zenfone 8.0+), <span class="pplb8t-">System</span> &gt; <span class="pplb8t-">Advanced</span> (Google Pixel), <span class="pplb8t-">Additional Settings</span> (Xiaomi MIUI, Oppo ColorOS), <span class="pplb8t-">More Settings</span> (Vivo FuntouchOS), <span class="pplb8t-">More</span> (ZTE Nubia). Unlike other options, it is not visible until explicitly enabled by the user. If developer options is enabled, you can use the search box in Android <span class="pplb8t-">Settings</span> to locate it as well. </p>

<h5 class="subsubsectionHead"><span class="titlemark">3.1.1.2</span> <a href="#QQ2-1-139" id="x1-1390003.1.1.2">How to enable developer options</a></h5>
<!--l. 25-->
<p class="noindent">From v2.5.19, AM has a new feature called <a href="#x1-710002.5">profiles</a>. The <a href="#x1-690002.4">profiles page</a> has an option to create new profiles from one of the presets. The presets consist of debloating profiles which can be used as a starting point to monitor, disable, and remove the bloatware from a proprietary Android operating system. </p>

<h4 class="subsectionHead"><span class="titlemark">3.1.2</span> <a href="#QQ2-1-140" id="x1-1400003.1.2">Enable USB debugging</a></h4>
<!--l. 33-->
<p class="noindent">After <a href="#x1-1380003.1.1.1">locating the developer options</a>, enable <span class="pplb8t-">Developer option</span> (if not already). After that, scroll down a bit until you will find the option <span class="pplb8t-">USB debugging</span>. Use the toggle button on the right hand side to enable it. At this point, you may get an alert prompt where you may have to click <span class="pplri8t-">OK</span> to actually enable it. You may also have to enable some other options depending on device vendor and ROM. Here are some examples: </p>

<h5 class="subsubsectionHead"><span class="titlemark">3.1.2.1</span> <a href="#QQ2-1-141" id="x1-1410003.1.2.1">Xiaomi (MIUI)</a></h5>
<!--l. 40-->
<p class="noindent">Enable <span class="pplb8t-">USB debugging (security settings)</span> as well. </p>

<h5 class="subsubsectionHead"><span class="titlemark">3.1.2.2</span> <a href="#QQ2-1-142" id="x1-1420003.1.2.2">Huawei (EMUI)</a></h5>
<!--l. 43-->
<p class="noindent">Maintaining a database should be the best choice when it comes to storing data. For now, several <span class="ectt-1000">tsv</span> files with each file having the name of the package and a <span class="ectt-1000">.tsv</span> extension. The file/database will be queried/processed by the <span class="ectt-1000">RulesStorageManager</span> class. Due to this abstraction, it should be easier to switch to database or encrypted database systems in future without changing the design of the entire project. Currently, All configuration files are stored at <span class="ectt-1000">/data/data/io.github.muntashirakon.AppManager/Files/conf</span>.</p>
<div class="mdframed" id="mdframed-28"><!--l. 46-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> Often the <span class="pplb8t-">USB debugging</span> mode could be disabled automatically by the system. If that’s the case, repeat the above procedure.</p>

</div>
<h5 class="subsubsectionHead"><span class="titlemark">A.1.2.1</span> <a href="#QQ2-1-186" id="x1-186000A.1.2.1">Internal</a></h5>
<!--l. 52-->
<p class="noindent">The format below is used internally within App Manager and is <span class="pplri8t-">not compatible with</span> <span class="pplri8t-">the external format.</span> </p>

<h5 class="subsubsectionHead"><span class="titlemark">3.1.2.4</span> <a href="#QQ2-1-144" id="x1-1440003.1.2.4">Troubleshooting</a></h5>
<!--l. 55-->
<p class="noindent">In case <span class="pplb8t-">USB Debugging</span> is greyed out, you can do the following:</p>
<ol class="enumerate1">
<li class="enumerate" id="x1-144002x1">Make sure you enabled USB debugging before connecting your phone to the PC or Mac via USB cable</li>
<li class="enumerate" id="x1-144004x2">Enable USB tethering after connecting to PC or Mac via USB cable</li>
<li class="enumerate" id="x1-144006x3">(For Samsung) If your device is running KNOX, you may have to follow some additional steps. See official documentations or consult support for further assistant</li>
</ol>
<!--l. 63-->

<h4 class="subsectionHead"><span class="titlemark">3.1.3</span> <a href="#QQ2-1-145" id="x1-1450003.1.3">Setup ADB on PC or Mac</a></h4>
<!--l. 64-->
<p class="noindent">In order to enable ADB over TCP, you have to set up ADB in your PC or Mac. <span class="pplbi8t-">Lineage OS users can skip to §</span><a href="#x1-1500003.1.4.1"><span class="pplbi8t-">3.1.4.1</span></a><span class="pplbi8t-">.</span> </p>

<h5 class="subsubsectionHead"><span class="titlemark">3.1.3.1</span> <a href="#QQ2-1-146" id="x1-1460003.1.3.1">Windows</a></h5>
<!--l. 69-->

<ol class="enumerate1">
<li class="enumerate" id="x1-146002x1">Download the latest version of <a href="https://dl.google.com/android/repository/platform-tools-latest-windows.zip">Android SDK Platform-Tools</a> for Windows</li>
<li class="enumerate" id="x1-146004x2">Extract the contents of the zip file into any directory (such as <span class="ectt-1000">C:\adb</span>) and navigate to that directory using <span class="pplri8t-">Explorer</span></li>
<li class="enumerate" id="x1-146006x3">Open <span class="pplb8t-">Command Prompt</span> or <span class="pplb8t-">PowerShell</span> from this directory. You can do it manually from the start menu or by holding <span class="ectt-1000">Shift</span> and Right clicking within the directory in <span class="pplri8t-">File Explorer</span> and then clicking either on <span class="pplri8t-">Open</span> <span class="pplri8t-">command window here</span> or on <span class="pplri8t-">Open PowerShell window here</span> (depending on what you have installed). You can now access ADB by typing <span class="ectt-1000">adb</span> (Command Prompt) or <span class="ectt-1000">./adb</span> (PowerShell). Do not close this window yet</li>
</ol>
<!--l. 81-->

<h5 class="subsubsectionHead"><span class="titlemark">3.1.3.2</span> <a href="#QQ2-1-147" id="x1-1470003.1.3.2">macOS</a></h5>
<!--l. 83-->

<ol class="enumerate1">
<li class="enumerate" id="x1-147002x1">Download the latest version of <a href="https://dl.google.com/android/repository/platform-tools-latest-darwin.zip">Android SDK Platform-Tools</a> for macOS</li>
<li class="enumerate" id="x1-147004x2">Extract the contents of the zip file into a directory by clicking on it. After that, navigate to that directory using <span class="pplri8t-">Finder</span> and locate <span class="ectt-1000">adb</span></li>
<li class="enumerate" id="x1-147006x3">Open <span class="pplb8t-">Terminal</span> using <span class="pplri8t-">Launchpad</span> or <span class="pplri8t-">Spotlight</span> and drag-and-drop <span class="ectt-1000">adb</span> from the <span class="pplri8t-">Finder</span> window into the <span class="pplri8t-">Terminal</span> window. Do not close the <span class="pplri8t-">Terminal</span> window yet</li>
</ol>
<div class="mdframed" id="mdframed-29"><!--l. 92-->
<p class="noindent"><span class="pplbi8t-">Tip.</span> If you are not afraid to use command line, here’s a one liner:</p>
<div class="fancyvrb" id="fancyvrb4"><a id="x1-147011r1"></a><span id="textcolor37"><span class="ectt-1000">cd</span></span><span class="ectt-1000"> ~/Downloads</span><span class="ectt-1000"> </span><span id="textcolor38"><span class="ectt-1000">&amp;&</span></span><span class="ectt-1000"> curl</span><span class="ectt-1000"> -o</span><span class="ectt-1000"> platform-tools.zip</span><span class="ectt-1000"> -L</span><br class="fancyvrb" /> <a id="x1-147013r2"></a><span class="ectt-1000">https://dl.google.com/android/repository/platform-tools-latest-darwin.zip</span><span class="ectt-1000"> </span><span id="textcolor39"><span class="ectt-1000">&amp;&</span></span><br class="fancyvrb" /> <a id="x1-147015r3"></a><span class="ectt-1000">unzip</span><span class="ectt-1000"> platform-tools.zip</span><span class="ectt-1000"> </span><span id="textcolor40"><span class="ectt-1000">&amp;&</span></span><span class="ectt-1000"> rm</span><span class="ectt-1000"> platform-tools.zip</span><span class="ectt-1000"> </span><span id="textcolor41"><span class="ectt-1000">&amp;&</span></span><span class="ectt-1000"> </span><span id="textcolor42"><span class="ectt-1000">cd</span></span><span class="ectt-1000"> platform-tools</span></div>
<!--l. 99-->
<p class="noindent">After that, you can simply type <span class="ectt-1000">./adb</span> in the in same <span class="pplri8t-">Terminal</span> window to access ADB.</p>

</div>
<h5 class="subsubsectionHead"><span class="titlemark">3.1.3.3</span> <a href="#QQ2-1-148" id="x1-1480003.1.3.3">Linux</a></h5>
<!--l. 104-->

<ol class="enumerate1">
<li class="enumerate" id="x1-148002x1">Open your favourite terminal emulator. In most GUI-distros, you can open it by holding <span class="ectt-1000">Control</span>, <span class="ectt-1000">Alter</span> and <span class="ectt-1000">T</span> at the same time</li>
<li class="enumerate" id="x1-148004x2">Run the following command:
<div class="fancyvrb" id="fancyvrb5"><a id="x1-148009r1"></a><span id="textcolor43"><span class="ectt-1000">cd</span></span><span class="ectt-1000"> ~/Downloads</span><span class="ectt-1000"> </span><span id="textcolor44"><span class="ectt-1000">&amp;&</span></span><span class="ectt-1000"> curl</span><span class="ectt-1000"> -o</span><span class="ectt-1000"> platform-tools.zip</span><span class="ectt-1000"> -L</span><br class="fancyvrb" /> <a id="x1-148011r2"></a><span class="ectt-1000">https://dl.google.com/android/repository/platform-tools-latest-linux.zip</span><span class="ectt-1000"> </span><span id="textcolor45"><span class="ectt-1000">&amp;&</span></span><br class="fancyvrb" /> <a id="x1-148013r3"></a><span class="ectt-1000">unzip</span><span class="ectt-1000"> platform-tools.zip</span><span class="ectt-1000"> </span><span id="textcolor46"><span class="ectt-1000">&amp;&</span></span><span class="ectt-1000"> rm</span><span class="ectt-1000"> platform-tools.zip</span><span class="ectt-1000"> </span><span id="textcolor47"><span class="ectt-1000">&amp;&</span></span><span class="ectt-1000"> </span><span id="textcolor48"><span class="ectt-1000">cd</span></span><span class="ectt-1000"> platform-tools</span></div>
</li>
<li class="enumerate" id="x1-148015x3">If it is successful, you can simply type <span class="ectt-1000">./adb</span> in the in <span class="pplri8t-">same</span> terminal emulator window or type <span class="ectt-1000">~/Downloads/platform-tools/adb</span> in any terminal emulator to access ADB.</li>
</ol>
<!--l. 116-->

<h4 class="subsectionHead"><span class="titlemark">3.1.4</span> <a href="#QQ2-1-149" id="x1-1490003.1.4">Configure ADB over TCP</a></h4>
<!--l. 118-->

<h5 class="subsubsectionHead"><span class="titlemark">3.1.4.1</span> <a href="#QQ2-1-150" id="x1-1500003.1.4.1">Lineage OS</a></h5>
<!--l. 119-->
<p class="noindent">Lineage OS (or its derivatives) users can directly enable ADB over TCP using the developer options. To enable that, go to the <span class="pplb8t-">Developer options</span>, scroll down until you find <span class="pplb8t-">ADB over Network</span>. Now, use the toggle button on the right-hand side to enable it and skip to §<a href="#x1-1520003.1.4.3">3.1.4.3</a>. </p>

<h5 class="subsubsectionHead"><span class="titlemark">3.1.4.2</span> <a href="#QQ2-1-151" id="x1-1510003.1.4.2">Enable ADB over TCP via PC or Mac</a></h5>
<!--l. 124-->
<p class="noindent">For other ROMs, you can do this using the command prompt/PowerShell/terminal emulator that you’ve opened in the step 3 of the previous section. In this section, I will use <span class="ectt-1000">adb</span> to denote <span class="ectt-1000">./adb</span>, <span class="ectt-1000">adb</span> or any other command that you needed to use based on your platform and software in the previous section.</p>
<ol class="enumerate1">
<li class="enumerate" id="x1-151002x1">Connect your device to your PC or Mac using a USB cable. For some devices, it is necessary to turn on <span class="pplri8t-">File transfer mode (MTP)</span> as well</li>
<li class="enumerate" id="x1-151004x2">To confirm that everything is working as expected, type <span class="ectt-1000">adb devices</span> in your terminal. If your device is connected successfully, you will see something like this:
<div class="fancyvrb" id="fancyvrb6"><a id="x1-151006r1"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> List</span><span class="ectt-1000"> of</span><span class="ectt-1000"> devices</span><span class="ectt-1000"> attached</span><br class="fancyvrb" /> <a id="x1-151008r2"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> xxxxxxxx</span><span class="ectt-1000"> </span><span class="ectt-1000"> device</span></div>
<div class="mdframed" id="mdframed-30"><!--l. 136-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> In some Android phones, an alert prompt will be appeared with a message <span class="pplb8t-">Allow USB Debugging</span> in which case, check <span class="pplri8t-">Always allow from this</span> <span class="pplri8t-">computer</span> and click <span class="pplb8t-">Allow</span>.</p>

</div>
</li>
<li class="enumerate" id="x1-151010x3">Finally, run the following command to enable ADB over TCP:
<div class="fancyvrb" id="fancyvrb7"><a id="x1-151013r1"></a><span class="ectt-1000">adb</span><span class="ectt-1000"> tcpip</span><span class="ectt-1000"> </span><span id="textcolor49"><span class="ectt-1000">5555</span></span></div>
</li>
</ol>
<div class="mdframed" id="mdframed-31"><!--l. 146-->
<p class="noindent"><span class="pplbi8t-">Danger.</span> You cannot disable developer options or USB debugging after enabling ADB over TCP.</p>

</div>
<h5 class="subsubsectionHead"><span class="titlemark">3.1.4.3</span> <a href="#QQ2-1-152" id="x1-1520003.1.4.3">Enable ADB mode on App Manager</a></h5>
<!--l. 151-->
<p class="noindent">After enabling ADB over TCP (in the previous subsections), open App Manager (AM). You should see <span class="pplb8t-">working on ADB mode</span> toast message at the bottom. If not, remove AM from the recents and open AM again from the launcher. If you see the toast message, you can safely <a href="#x1-1530003.1.4.4">stop ADB over TCP</a>.</p>
<div class="mdframed" id="mdframed-32"><!--l. 155-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> In some Android phones, the USB cable is needed to be disconnected from the PC in order for it to work.</p>

</div>
<div class="mdframed" id="mdframed-33"><!--l. 159-->
<p class="noindent"><span class="pplbi8t-">Warning.</span> ADB over TCP will be disabled after a restart. In that case, you have to follow §<a href="#x1-1510003.1.4.2">3.1.4.2</a> again.</p>

</div>
<h5 class="subsubsectionHead"><span class="titlemark">3.1.4.4</span> <a href="#QQ2-1-153" id="x1-1530003.1.4.4">Stop ADB over TCP</a></h5>
<!--l. 165-->
<p class="noindent">In order to ensure device security, you should stop ADB over TCP right after AM detects it. To do that, connect your device to your PC or Mac and run the following command:</p>
<div class="fancyvrb" id="fancyvrb8"><a id="x1-153003r1"></a><span class="ectt-1000">adb</span><span class="ectt-1000"> kill-server</span></div>
<!--l. 169-->
<p class="noindent">Replace <span class="ectt-1000">adb</span> with <span class="ectt-1000">./adb</span> or any other command that you had to use in previous steps.</p>
<div class="mdframed" id="mdframed-34"><!--l. 171-->
<p class="noindent"><span class="pplbi8t-">Lineage OS users.</span> You can turn off <span class="pplb8t-">ADB over Network</span> in developer options, but turning off this option will also stop App Manager’s remote server. So, turn it off only when you’re not going to use App Manager in ADB over TCP mode.</p>

</div>
<h4 class="subsectionHead"><span class="titlemark">3.1.5</span> <a href="#QQ2-1-154" id="x1-1540003.1.5">References</a></h4>
<!--l. 178-->

<ol class="enumerate1">
<li class="enumerate" id="x1-154002x1"><a href="https://www.xda-developers.com/install-adb-windows-macos-linux">How to Install ADB on Windows, macOS, and Linux</a></li>
<li class="enumerate" id="x1-154004x2"><a href="https://developer.android.com/studio/command-line/adb">Android Debug Bridge (adb)</a></li>
<li class="enumerate" id="x1-154006x3"><a href="https://www.syncios.com/android/fix-usb-debugging-grey-out.html">How to fix USB debugging greyed out?</a></li>
</ol>
<!--l. 1-->

<h3 class="sectionHead"><span class="titlemark">3.2</span> <a href="#QQ2-1-155" id="x1-1550003.2">Back up/Restore</a></h3>
<!--l. 2-->
<p class="noindent">App Manager has a modern, advanced and easy-to-use backup/restore system implemented from the scratch. This is probably the only app that has the ability to restore not only the app or its data but also permissions and rules that you’ve configured within App Manager. You can also choose to back up an app multiple times (with custom names) or for all users. </p>
<p class="indent"></p>
<div class="am-see-also"><span class="pplri8t-">See also:</span> <span class="pplri8c-">•</span> <a href="#x1-590002.3.4"><span class="pplri8t-">1-Click Ops: Back up</span></a> <span class="pplri8c-">•</span> <a href="#x1-650002.3.5"><span class="pplri8t-">1-Click Ops: Restore</span></a> 

</div>
<!--l. 12-->

<h4 class="subsectionHead"><span class="titlemark">3.2.1</span> <a href="#QQ2-1-156" id="x1-1560003.2.1">Location</a></h4>
<!--l. 13-->
<p class="noindent">Back up/restore is a part of <a href="#x1-160002.1.1">batch operations</a>. It is also located inside the <a href="#x1-390002.2.2.3">options menu</a> in the <a href="#x1-360002.2.2">App Info tab</a>. Clicking on <span class="pplb8t-">Backup/Restore</span> opens the <span class="pplb8t-">Backup</span> <span class="pplb8t-">Options</span>. Backups are located at <span class="ectt-1000">/storage/emulated/0/AppManager</span> by default. You can configure custom backup location in the <a href="#x1-1080002.6.8.5">settings page</a> in which case the backups will be located at the <span class="ectt-1000">AppManager</span> folder in the selected volume.</p>
<div class="mdframed" id="mdframed-35"><!--l. 21-->
<p class="noindent"><span class="pplbi8t-">Note.</span> If one or more selected apps do not have any backup, the <span class="pplb8t-">Restore</span> and <span class="pplb8t-">Delete</span> <span class="pplb8t-">Backup</span> options will not be displayed.</p>

</div>
<h4 class="subsectionHead"><span class="titlemark">3.2.2</span> <a href="#QQ2-1-157" id="x1-1570003.2.2">Backup Options</a></h4>
<!--l. 27-->
<p class="noindent"><span class="paragraphHead"><a href="#x1-217000B.2.8.4" id="x1-217000B.2.8.4">Known limitation</a></span> Currently, only a generic key is used to sign APK files </p>
<p class="indent">A complete description of the backup options is given below:</p>
<ul class="itemize1">
<li class="itemize"><span class="pplb8t-">APK files.</span> Whether to back up the APK files. This includes the <span class="pplri8t-">base APK</span> file along with the <span class="ectt-1000">split APK</span> files if they exist.</li>
<li class="itemize"><span class="pplb8t-">Internal data.</span> Whether to back up the internal data directories. These directories are located at <span class="ectt-1000">/data/user/&lt;user_id&gt;</span> and (for Android N or later) <span class="ectt-1000">/data/user_de/&lt;user_id&gt;</span>.</li>
<li class="itemize"><span class="pplb8t-">External data.</span> Whether to back up data directories located in the internal memory as well as SD Card (if exists). External data directories often contain non-essential app data or media files (instead of using the dedicated media folder) and may increase the backup size. However, it might be essential for some apps. Although it isn’t checked by default (as it might dramatically increase the size of the backups), you may have to check it in order to ensure a smooth restore of your backups.
<div class="mdframed" id="mdframed-36"><!--l. 43-->
<p class="noindent"><span class="pplbi8t-">Caution.</span> Internal data folders should always be backed up if you are going to back up the external data folders. However, it could be useful to back up only the external folders if the app in question downloads a lot of assets from the Internet.</p>

</div>
</li>
<li class="itemize"><span class="pplb8t-">OBB and media.</span> Whether to back up or restore the OBB and the media directories located in the external storage or the SD Card. This is useful for games and the graphical software which actually use these folders.</li>
<li class="itemize"><span class="pplb8t-">Cache.</span> Android apps have multiple cache directories located at every data directories (both internal and external). There are two types of cache: <span class="pplb8t-">cache</span> and <span class="pplb8t-">code cache</span>. Enabling this option excludes both cache directories from all the data directories. It is generally advised to exclude cache directories since most apps do not clear the cache regularly (for some reason, the only way an app can clear its cache is by deleting the entire cache directory) and usually handled by the OS itself. Apps such as Telegram may use a very large cache (depending on the storage space) which may dramatically increase the backup size. When it is disabled, AM also ignores the <span class="pplb8t-">no_backup</span> directories.</li>
<li class="itemize"><span class="pplb8t-">Extras.</span> Backup/restore app permissions, net policy, battery optimization, SSAID, etc., enabled by default. Note that, blocking rules are applied <span class="pplri8t-">after</span> applying the extras. So, if an item is present in both places, it will be overwritten (i.e., the one from the blocking rules will be used).</li>
<li class="itemize"><span class="pplb8t-">Rules.</span> This option lets you back up blocking rules configured within App Manager. This might come in handy if you have customised permissions or block some components using App Manager as they will also be backed up or restored when you enable this option.</li>
<li class="itemize"><span class="pplb8t-">Backup Multiple.</span> Whether this is a multiple backup. By default, backups are saved using their user ID. Enabling this option allows you to create additional backups. These backups use the current date-time as the default backup name, but you can also specify custom backup name using the input field displayed when you click on the <span class="pplb8t-">Backup</span> button.</li>
<li class="itemize"><span class="pplb8t-">Custom users.</span> Backup or restore for the selected users instead of only the current user. This option is only displayed if the system has more than one user.</li>
<li class="itemize"><span class="pplb8t-">Skip signature checks.</span> When taking a backup, checksum of every file (as well as the signing certificate(s) of the base APK file) is generated and stored in the <span class="ectt-1000">checksums.txt</span> file. When you restore the backup, the checksums are generated again and are matched with the checksums stored in the said file. Enabling this option will disable the signature checks. This option is applied only when you restore a backup. During backup, the checksums are generated regardless of this option.
<div class="mdframed" id="mdframed-37"><!--l. 83-->
<p class="noindent"><span class="pplbi8t-">Caution.</span> You should always disable this option to ensure that your backups are not modified by any third-party applications. However, this would only work if you enabled encryption.</p>

</div>
</li>
</ul>
<!--l. 89-->
<p class="noindent"><span class="pplri8t-">See also:</span> <a href="#x1-1070002.6.8.4"><span class="pplri8t-">Settings: Encryption</span></a></p>
<h4 class="subsectionHead"><span class="titlemark">3.2.3</span> <a href="#QQ2-1-158" id="x1-1580003.2.3">Backup</a></h4>
<!--l. 92-->
<p class="noindent">Backup respects all the backup options except <span class="pplb8t-">Skip signature checks</span>. If base backups (i.e., backups that don’t have the <span class="pplb8t-">Backup Multiple</span> option) already exist, you will get a warning as the backups will be overwritten. If <span class="pplb8t-">Backup Multiple</span> is set, you have an option to input the backup name, or you can leave it blank to use the current date-time. </p>

<h4 class="subsectionHead"><span class="titlemark">3.2.4</span> <a href="#QQ2-1-159" id="x1-1590003.2.4">Restore</a></h4>
<!--l. 97-->
<p class="noindent">Restore respects all the backup options and will fail if <span class="pplb8t-">APK files</span> option is set, but the backup doesn’t contain such backups or in other cases, if the app isn’t installed. When restoring backups for multiple packages, you can only restore the base backups (see <a href="#x1-1580003.2.3">backup</a> section for an explanation). However, when restoring backups for a single package, you have the option to select which backup to restore. If <span class="pplb8t-">All</span> <span class="pplb8t-">users</span> option is set, AM will restore the selected backup for all users in the latter case but in the former case, it will restore base backups for the respective users.</p>
<div class="mdframed" id="mdframed-38"><!--l. 103-->
<p class="noindent"><span class="pplbi8t-">Notice.</span> Apps that use storage access framework (SAF), SSAID or Android KeyStore works properly only after an immediate restart.</p>

</div>
<h4 class="subsectionHead"><span class="titlemark">3.2.5</span> <a href="#QQ2-1-160" id="x1-1600003.2.5">Delete Backup</a></h4>
<!--l. 108-->
<p class="noindent">Delete backup only respects <span class="pplb8t-">All users</span> option and when it is selected, only the base backups for all users will be deleted with a prompt. When deleting backups for a single package, another dialog will be displayed where you can select the backups to delete.</p>
<h2 class="chapterHead"><span class="titlemark">Chapter 4</span><br /> <a href="#QQ2-1-161" id="x1-1610004">Frequently Asked Questions</a></h2>
<h3 class="sectionHead"><span class="titlemark">4.1</span> <a href="#QQ2-1-162" id="x1-1620004.1">App Components</a></h3>
<!--l. 3-->

<h4 class="subsectionHead"><span class="titlemark">4.1.1</span> <a href="#QQ2-1-163" id="x1-1630004.1.1">What are the app components?</a></h4>
<!--l. 4-->
<p class="noindent">Activities, services, broadcast receivers (also known as receivers) and content providers (also known as providers) are jointly called app components. More technically, they all inherit the <a href="https://developer.android.com/reference/android/content/pm/ComponentInfo">ComponentInfo</a> class. </p>

<h4 class="subsectionHead"><span class="titlemark">4.1.2</span> <a href="#QQ2-1-164" id="x1-1640004.1.2">How are the tracker or other components blocked in AM? What are its limitations?</a></h4>
<!--l. 9-->
<p class="noindent">The signature tab is improved to support localization. It also displays multiple checksums for a signature. </p>
<p class="indent">Even IFW has some limitations which are primarily applicable for the system apps:</p>
<ul class="itemize1">
<li class="itemize">The app in question is whitelisted by the system i.e. the system cannot function properly without these apps and may cause random crashes. These apps include but not limited to Android System, System UI, Phone Services. They will run even if you disable them or block their components via IFW.</li>
<li class="itemize">Another system app or system process is calling a specific component of the app in question via interprocess communication (IPC). In this case, the component will be activated regardless of its presence in the IFW rules or even if the entire app is disabled. If you have such system apps, the only way to prevent them from running is to get rid of them.</li>
</ul>
<!--l. 30-->

<h4 class="subsectionHead"><span class="titlemark">B.4.1</span> <a href="#QQ2-1-232" id="x1-232000B.4.1">Bundled App (Split APK)</a></h4>
<!--l. 31-->
<p class="noindent">Bundled app formats such as <span class="pplb8t-">apks</span> and <span class="pplb8t-">xapk</span> are now supported. You can install these apps using the regular installation buttons. For root and adb users, apps are installed using shell, and for non-root users, the platform default method is used. </p>

<h4 class="subsectionHead"><span class="titlemark">4.1.4</span> <a href="#QQ2-1-166" id="x1-1660004.1.4">Does app components blocked by other tools retained in AM?</a></h4>
<!--l. 41-->
<p class="noindent"><span class="pplb8t-">No.</span> But components blocked by the Android System or any other tools are displayed in the <a href="#x1-340002.2">App Details page</a> (within the component tabs). In v2.5.12 and onwards, you can import these rules in <a href="#x1-1140002.6.9.2">Settings</a>. But since there is no way to distinguish between components blocked by third-party apps and components blocked by the System, you should be very careful when choosing app. </p>

<h4 class="subsectionHead"><span class="titlemark">4.1.5</span> <a href="#QQ2-1-167" id="x1-1670004.1.5">What happened to the components blocked by AM which are also blocked by other tools?</a></h4>
<!--l. 48-->
<p class="noindent">AM blocks the components again using <a href="https://carteryagemann.com/pages/android-intent-firewall.html">Intent Firewall (IFW)</a>. They are not unblocked (if blocked using <span class="pplri8t-">pm</span> or <a href="https://github.com/RikkaApps/Shizuku">Shizuku</a> method) and blocked again. But if you unblock a component in the <a href="#x1-340002.2">App Details page</a>, it will be reverted back to default state —- blocked or unblocked as described in the corresponding app manifest —- using both IFW and <span class="pplri8t-">pm</span> method. However, components blocked by <a href="https://www.myandroidtools.com">MyAndroidTools (MAT)</a> with IFW method will not be unblocked by AM. To solve this issue, you can first import the corresponding configuration to AM in <a href="#x1-1140002.6.9.2">Settings</a> in which case MAT’s configurations will be removed. But this option is only available from v2.5.12. </p>

<h4 class="subsectionHead"><span class="titlemark">4.1.6</span> <a href="#QQ2-1-168" id="x1-1680004.1.6">What is instant component blocking?</a></h4>
<!--l. 59-->
<p class="noindent">When you block a component in the <a href="#x1-340002.2">App Details page</a>, the blocking is not applied by default. It is only applied when you apply blocking using the <span class="pplri8t-">Apply rules</span> option in the top-right menu. If you enable <a href="#x1-1100002.6.9.1">instant component blocking</a>, blocking will be applied as soon as you block a component. If you choose to block tracker components, however, blocking is applied automatically regardless of this setting. You can also remove blocking for an app by simply clicking on <span class="pplri8t-">Remove rules</span> in the same menu in the <span class="pplb8t-">App Details page</span>. Since the default behaviour gives you more control over apps, it is better to keep <span class="pplri8t-">instant component blocking</span> option disabled. </p>

<h4 class="subsectionHead"><span class="titlemark">4.1.7</span> <a href="#QQ2-1-169" id="x1-1690004.1.7">Tracker classes versus tracker components</a></h4>
<!--l. 68-->
<p class="noindent">All app components are classes but not all classes are components. In fact, only a few of the classes are components. That being said, <a href="#x1-1200002.7">scanner page</a> displays a list of trackers along with the number of classes, not just the components. In all other pages, trackers and tracker components are used synonymously to denote tracker components, i.e. blocking tracker means blocking tracker components, not tracker classes.</p>
<div class="mdframed" id="mdframed-39"><!--l. 73-->
<p class="noindent"><span class="pplbi8t-">Info.</span> Tracker classes cannot be blocked. They can only be removed by editing the app itself.</p>

</div>
<h4 class="subsectionHead"><span class="titlemark">4.1.8</span> <a href="#QQ2-1-170" id="x1-1700004.1.8">How to unblock the tracker components blocked using 1-Click Ops or Batch Ops?</a></h4>
<!--l. 78-->
<p class="noindent">Some apps may misbehave due to their dependency to tracker components blocked by AM. From v2.5.12, there is an option to unblock tracker components in the <a href="#x1-550002.3">1-Click Ops page</a>. However, in previous versions, there is no such options. To unblock these tracker components, first go to the <a href="#x1-340002.2">App Details page</a> of the misbehaving app. Then, switching to the <span class="pplri8t-">Activities</span> tab, click on the <span class="pplri8t-">Remove rules</span> options in the top-right menu. All the blocking rules related to the components of the app will be removed immediately. Alternatively, if you have found the component that is causing the issue, you can unblock the component by clicking on the <span class="pplri8t-">unblock</span> button next to the component name. If you have enabled <a href="#x1-1100002.6.9.1">instant component blocking</a> in Settings, disable it first as <span class="pplri8t-">Remove rules</span> option will not be visible when it is enabled. </p>
<p class="indent">If you have <span class="pplb8t-">Google Play Services</span> (<span class="ectt-1000">com.google.android.gms</span>) installed, unblocking the following <a href="#x1-430002.2.3.2">services</a> may fix certain crashes:</p>
<ol class="enumerate1">
<li class="enumerate" id="x1-170002x1">Ad Request Broker Service <span class="ectt-0900">.ads.AdRequestBrokerService</span></li>
<li class="enumerate" id="x1-170004x2"><span class="pplr8t-x-x-90">Cache Broker Service</span> <span class="ectt-0900">.ads.cache.CacheBrokerService</span></li>
<li class="enumerate" id="x1-170006x3"><span class="pplr8t-x-x-90">Gservices Value Broker Service</span> <span class="ectt-0900">.ads.GservicesValueBrokerService</span></li>
<li class="enumerate" id="x1-170008x4"><span class="pplr8t-x-x-90">Advertising Id Notification Service</span> <span class="ectt-0900">.ads.identifier.service.AdvertisingIdNotificationService</span></li>
<li class="enumerate" id="x1-170010x5"><span class="pplr8t-x-x-90">Advertising Id Service</span> <span class="ectt-0900">.ads.identifier.service.AdvertisingIdService</span></li>
</ol>
<!--l. 1-->

<h3 class="sectionHead"><span class="titlemark">4.2</span> <a href="#QQ2-1-171" id="x1-1710004.2">ADB over TCP</a></h3>
<!--l. 3-->

<h4 class="subsectionHead"><span class="titlemark">4.2.1</span> <a href="#QQ2-1-172" id="x1-1720004.2.1">Do I have to enable ADB over TCP everytime I restart?</a></h4>
<!--l. 4-->
<p class="noindent">Unfortunately, yes. However, as of v2.5.13, you don’t need to keep AoT enabled all the time as it now uses a server-client mechanism to interact with the system, but you do have to keep the <span class="pplb8t-">Developer options</span> as well as <span class="pplb8t-">USB debugging</span> enabled. To do that, enable <a href="#x1-1360003.1">ADB over TCP</a> and open App Manager. You should see <span class="pplri8t-">working on</span> <span class="pplri8t-">ADB mode</span> toast message in the bottom. If you see it, you can safely stop the server. For Lineage OS or its derivative OS, you can toggle AoT without any PC or Mac by simply toggling the <span class="pplb8t-">ADB over network</span> option located just below the <span class="pplb8t-">USB debugging</span>, but the server can’t be stopped for the latter case. </p>

<h4 class="subsectionHead"><span class="titlemark">4.2.2</span> <a href="#QQ2-1-173" id="x1-1730004.2.2">Cannot enable USB debugging. What to do?</a></h4>
<!--l. 12-->
<p class="noindent">See §<a href="#x1-1400003.1.2">3.1.2</a> in Chapter <a href="#x1-1350003">3</a>. </p>

<h4 class="subsectionHead"><span class="titlemark">4.2.3</span> <a href="#QQ2-1-174" id="x1-1740004.2.3">Can I block tracker or any other application components using ADB over TCP?</a></h4>
<!--l. 15-->
<p class="noindent"><span class="paragraphHead"><a href="#x1-245000B.4.9" id="x1-245000B.4.9">Known Limitation</a></span> Not all translations are verified yet. </p>

<h4 class="subsectionHead"><span class="titlemark">B.4.10</span> <a href="#QQ2-1-246" id="x1-246000B.4.10">App Data Backup</a></h4>
<!--l. 19-->
<p class="noindent">Install app only for the current user at the time of restoring backups. Support for split apks is also added.</p>
<h3 class="sectionHead"><span class="titlemark">4.3</span> <a href="#QQ2-1-176" id="x1-1760004.3">Miscellanea</a></h3>
<!--l. 3-->

<h4 class="subsectionHead"><span class="titlemark">4.3.1</span> <a href="#QQ2-1-177" id="x1-1770004.3.1">I don’t use root/ADB. Am I completely safe from any harms?</a></h4>
<!--l. 4-->
<p class="noindent">Yes. AM cannot modify any system settings without root or ADB over TCP. </p>

<h4 class="subsectionHead"><span class="titlemark">4.3.2</span> <a href="#QQ2-1-178" id="x1-1780004.3.2">Why does AM have the INTERNET permission when it doesn’t connect to the Internet?</a></h4>
<!--l. 7-->
<p class="noindent">AM uses the INTERNET permission for the following reasons:</p>
<ol class="enumerate1">
<li class="enumerate" id="x1-178002x1"><span class="pplb8t-">To provide ADB over TCP support for the non-root users.</span> ADB over TCP is a custom network protocol that usually runs on port <span class="ectt-1000">5555</span>. Therefore, to connect to this port via localhost, AM needs this permission.</li>
<li class="enumerate" id="x1-178004x2"><span class="pplb8t-">To execute privileged code both on root and ADB mode.</span> AM, being a user app, cannot execute privileged code nor can it access any hidden APIs. Consequently, AM runs a server in the privileged environment using <span class="ectt-1000">app_process</span> at port <span class="ectt-1000">60001</span> and on the user side, AM connects to this server and execute privileged code remotely from the app. Now, there are alternative ways to communicate with a remote service. Currently, they are under consideration.</li>
</ol>
<!--l. 18-->

<h4 class="subsectionHead"><span class="titlemark">4.3.3</span> <a href="#QQ2-1-179" id="x1-1790004.3.3">How are the trackers and libraries are updated?</a></h4>
<!--l. 19-->
<p class="noindent">Trackers and libraries are updated manually before making a new release. </p>

<h4 class="subsectionHead"><span class="titlemark">4.3.4</span> <a href="#QQ2-1-180" id="x1-1800004.3.4">Any plans for Shizuku?</a></h4>
<!--l. 22-->
<p class="noindent">App Manager’s use of hidden API and privileged code execution is now much more complex and cannot be integrated with other third party apps such as <a href="https://shizuku.rikka.app">Shizuku</a>. Here are some reasons for not considering Shizuku (which now has Apache 2.0 license) for App Manager:</p>
<ol class="enumerate1">
<li class="enumerate" id="x1-180002x1">Shizuku was initially non-free which led me to use a similar approach for App Manager to support both root and ADB</li>
<li class="enumerate" id="x1-180004x2">App Manager already supports both ADB and root which in some cases is more capable than Shizuku</li>
<li class="enumerate" id="x1-180006x3">Relying on a third-party app for the major functionalities is not a good design choice</li>
<li class="enumerate" id="x1-180008x4">Integration of Shizuku will increase the complexity of App Manager.</li>
</ol>
<!--l. 33-->

<h4 class="subsectionHead"><span class="titlemark">4.3.5</span> <a href="#QQ2-1-181" id="x1-1810004.3.5">What are bloatware and how to remove them?</a></h4>
<!--l. 34-->
<p class="noindent">Each operation has a private name which are described by <span class="ectt-1000">sOpNames</span>. These names are usually the same names as the constants without the <span class="ectt-1000">OP_</span> prefix. Some operations have public names as well which are described by <span class="ectt-1000">sOpToString</span>. For instance, <span class="ectt-1000">OP_COARSE_LOCATION</span> has the public name <span class="pplb8t-">android:coarse_location</span>. </p>
<p class="indent">As a gradual process of moving permissions to app ops, there are already many permissions that are defined under some operations. These permissions are mapped in <span class="ectt-1000">sOpPerms</span>. For example, the permission <span class="pplb8t-">android.Manifest.permission.ACCESS_COARSE_LOCATION</span> is mapped to <span class="ectt-1000">OP_COARSE_LOCATION</span>. Some operations may not have any associated permissions which have <span class="ectt-1000">null</span> values. </p>
<p class="indent">As described in the previous section, operations that are configured for an app are stored at <a href="#x1-257000C.5"><span class="ectt-1000">/data/system/appops.xml</span></a>. If an operation is not configured, then whether system will allow that operation is determined from <span class="ectt-1000">sOpDefaultMode</span>. It lists the <span class="pplri8t-">default mode</span> for each operation. </p>
<p class="indent"><span class="ectt-1000">MODE_*</span> constants also integer constants starting from <span class="ectt-1000">0</span>. These constants are assigned to each operation describing whether an app is authorised to perform that operation. These modes usually have associated names such as <span class="pplb8t-">allow</span> for <span class="ectt-1000">MODE_ALLOWED</span>, <span class="pplb8t-">ignore</span> for <span class="ectt-1000">MODE_IGNORED</span>, <span class="pplb8t-">deny</span> for <span class="ectt-1000">MODE_ERRORED</span> (a rather misnomer), <span class="pplb8t-">default</span> for <span class="ectt-1000">MODE_DEFAULT</span> and <span class="pplb8t-">foreground</span> for <span class="ectt-1000">MODE_FOREGROUND</span>. </p>
<p class="indent">From v2.5.19, AM has a new feature called <a href="#x1-710002.5">profiles</a>. The <a href="#x1-690002.4">profiles page</a> has an option to create new profiles from one of the presets. The presets consist of debloating profiles which can be used as a starting point to monitor, disable, and remove the bloatware from a proprietary Android operating system.</p>
<div class="mdframed" id="mdframed-40"><!--l. 67-->
<p class="noindent"><span class="pplbi8t-">Note.</span> In most cases, you cannot completely debloat your device. Therefore, it is recommended that you use a custom ROM free from bloatware such as Graphene OS, Lineage OS or their derivatives.</p>

</div>
<!--l. 1-->
<p class="indent"><a id="x1-181001r161"></a></p>
<h2 class="appendixHead"><span class="titlemark">Appendix A</span><br /> <a href="#QQ2-1-182" id="x1-182000A">Specifications</a></h2>
<h3 class="sectionHead"><span class="titlemark">A.1</span> <a href="#QQ2-1-183" id="x1-183000A.1">Rules Specification</a></h3>
<!--l. 4-->

<h4 class="subsectionHead"><span class="titlemark">A.1.1</span> <a href="#QQ2-1-184" id="x1-184000A.1.1">Background</a></h4>
<!--l. 5-->
<p class="noindent">AM currently supports blocking activities, broadcast receivers, content providers, services, app ops and permissions, and in future I may add more blocking options. In order to add more portability, it is necessary to import/export all these data. </p>
<p class="indent">Maintaining a database should be the best choice when it comes to storing data. For now, several <span class="ectt-1000">tsv</span> files with each file having the name of the package and a <span class="ectt-1000">.tsv</span> extension. The file/database will be queried/processed by the <span class="ectt-1000">RulesStorageManager</span> class. Due to this abstraction, it should be easier to switch to database or encrypted database systems in future without changing the design of the entire project. Currently, All configuration files are stored at <span class="ectt-1000">/data/data/io.github.muntashirakon.AppManager/Files/conf</span>. </p>

<h4 class="subsectionHead"><span class="titlemark">A.1.2</span> <a href="#QQ2-1-185" id="x1-185000A.1.2">Rules File Format</a></h4>
<!--l. 17-->

<h5 class="subsubsectionHead"><span class="titlemark">A.1.2.1</span> <a href="#QQ2-1-186" id="x1-186000A.1.2.1">Internal</a></h5>
<!--l. 18-->
<p class="noindent">The format below is used internally within App Manager and is <span class="pplri8t-">not compatible with</span> <span class="pplri8t-">the external format.</span></p>
<div class="fancyvrb" id="fancyvrb9"><a id="x1-186002r1"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> &lt;name&gt;</span><span class="ectt-1000"> &lt;type&gt;</span><span class="ectt-1000"> &lt;mode&gt;|&lt;component_status&gt;|&lt;is_granted&gt;</span></div>
<!--l. 22-->
<p class="noindent">Here:</p>
<ul class="itemize1">
<li class="itemize"><span class="ectt-1000">&lt;name&gt;</span> – Component/permission/app op name (in case of app op, it could be string or integer)</li>
<li class="itemize"><span class="ectt-1000">&lt;type&gt;</span> – One of the <span class="ectt-1000">ACTIVITY</span>, <span class="ectt-1000">RECEIVER</span>, <span class="ectt-1000">PROVIDER</span>, <span class="ectt-1000">SERVICE</span>, <span class="ectt-1000">APP_OP</span>, <span class="ectt-1000">PERMISSION</span></li>
<li class="itemize"><span class="ectt-1000">&lt;mode&gt;</span> – (For app ops) The associated <a href="#x1-252000C.3.2">mode constant</a></li>
<li class="itemize"><span class="ectt-1000">mOp</span>: Denotes one of the <a href="#x1-251000C.3.1"><span class="ectt-1000">OP_*</span> constants</a>
<ul class="itemize2">
<li class="itemize"><span class="ectt-1000">true</span> – Component has been applied (<span class="ectt-1000">true</span> value is kept for compatibility)</li>
<li class="itemize"><span class="ectt-1000">false</span> – Component hasn’t been applied yet, but will be applied in future (<span class="ectt-1000">false</span> value is kept for compatibility)</li>
<li class="itemize"><span class="ectt-1000">unblocked</span> – Component is scheduled to be unblocked</li>
</ul>
</li>
<li class="itemize"><span class="ectt-1000">mProxyPackageNames:</span> No documentation found</li>
</ul>
<!--l. 38-->

<h5 class="subsubsectionHead"><span class="titlemark">A.1.2.2</span> <a href="#QQ2-1-187" id="x1-187000A.1.2.2">External</a></h5>
<!--l. 39-->
<p class="noindent">External format is used for importing or exporting rules in App Manager.</p>
<div class="fancyvrb" id="fancyvrb10"><a id="x1-187002r1"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> &lt;package_name&gt;</span><span class="ectt-1000"> &lt;component_name&gt;</span><span class="ectt-1000"> &lt;type&gt;</span><span class="ectt-1000"> &lt;mode&gt;|&lt;component_status&gt;|&lt;is_granted&gt;</span></div>
<!--l. 43-->
<p class="noindent">This the format is essentially the same as above except for the first item which is the name of the package.</p>
<div class="mdframed" id="mdframed-41"><!--l. 45-->
<p class="noindent"><span class="pplbi8t-">Caution.</span> The exported rules have a different format than the internal one and should not be copied directly to the <span class="pplb8t-">conf</span> folder.</p>

</div>
<a id="x1-187003r161"></a>
<h2 class="appendixHead"><span class="titlemark">Appendix B</span><br /> <a href="#QQ2-1-188" id="x1-188000B">Changelogs</a></h2>
<h3 class="sectionHead"><span class="titlemark">B.1</span> <a href="#QQ2-1-189" id="x1-189000B.1">v2.6.0 (385)</a></h3>
<!--l. 5-->

<h4 class="subsectionHead"><span class="titlemark">B.1.1</span> <a href="#QQ2-1-190" id="x1-190000B.1.1">Introducing Backups</a></h4>
<!--l. 6-->
<p class="noindent">Back up/restore feature is now finally out of beta! Read <a href="#x1-1550003.2">the corresponding guide</a> to understand how it works. </p>

<h4 class="subsectionHead"><span class="titlemark">B.1.2</span> <a href="#QQ2-1-191" id="x1-191000B.1.2">Introducing Log Viewer</a></h4>
<!--l. 10-->
<p class="noindent"><a href="#x1-310002.1.5.9">Log viewer</a> is essentially a front-end for <span class="ectt-1000">logcat</span>. It can be used to filter logs by <span class="pplri8t-">tag</span> or <span class="pplri8t-">pid</span> (process ID), or even by custom filters. Log levels AKA verbosity can also be configured. You can also save, share and manage logs. </p>

<h4 class="subsectionHead"><span class="titlemark">B.1.3</span> <a href="#QQ2-1-192" id="x1-192000B.1.3">Lock App Manager</a></h4>
<!--l. 16-->
<p class="noindent"><a href="#x1-920002.6.3">Lock App Manager</a> with the screen lock configured for your device. </p>

<h4 class="subsectionHead"><span class="titlemark">B.1.4</span> <a href="#QQ2-1-193" id="x1-193000B.1.4">Extended Modes for App Ops</a></h4>
<!--l. 19-->
<p class="noindent">You can set any mode for any app ops that your device supports, either from the <a href="#x1-580002.3.3">1-click ops page</a> or from the <a href="#x1-500002.2.4.1">app ops tab</a>. </p>

<h4 class="subsectionHead"><span class="titlemark">B.1.5</span> <a href="#QQ2-1-194" id="x1-194000B.1.5">New Batch Ops: Add to Profile</a></h4>
<!--l. 23-->
<p class="noindent">You can now easily add selected apps to an existing profile using the batch operations. </p>

<h4 class="subsectionHead"><span class="titlemark">B.1.6</span> <a href="#QQ2-1-195" id="x1-195000B.1.6">App Info: Improved</a></h4>
<!--l. 26-->
<p class="noindent">App info tab now has many options, including the ability to change <a href="#x1-30001.1">SSAID</a>, network policy (i.e. background network usage), battery optimization, etc. Most of the tags used in this tab are also clickable, and if you click on them, you will be able to look at the current state or configure them right away. </p>

<h4 class="subsectionHead"><span class="titlemark">B.1.7</span> <a href="#QQ2-1-196" id="x1-196000B.1.7">Advanced Sort and Filtering Options in the Main Page</a></h4>
<!--l. 32-->
<p class="noindent">Sort and filter options are now replaced by <a href="#x1-220002.1.5.2">List Options</a> which is highly configurable, including the ability to filter using profiles. </p>

<h4 class="subsectionHead"><span class="titlemark">B.1.8</span> <a href="#QQ2-1-197" id="x1-197000B.1.8">About This Device</a></h4>
<!--l. 36-->
<p class="noindent">Interested in knowing about your device in just one page? Go to the bottom of the <a href="#x1-1190002.6.11">settings page</a>. </p>

<h4 class="subsectionHead"><span class="titlemark">B.1.9</span> <a href="#QQ2-1-198" id="x1-198000B.1.9">Enable/disable Features</a></h4>
<!--l. 40-->
<p class="noindent">Not interested in all the features that AM offers? You can disable some features in <a href="#x1-940002.6.5">settings</a>. </p>

<h4 class="subsectionHead"><span class="titlemark">B.1.10</span> <a href="#QQ2-1-199" id="x1-199000B.1.10">New Languages</a></h4>
<!--l. 44-->
<p class="noindent">AM now has more than 19 languages! New languages include Farsi, Japanese and Traditional Chinese. </p>

<h4 class="subsectionHead"><span class="titlemark">B.1.11</span> <a href="#QQ2-1-200" id="x1-200000B.1.11">Signing the APK Files</a></h4>
<!--l. 48-->
<p class="noindent">You can now import external signing keys in AM! For security, App Manager has its own encrypted KeyStore which can also be <a href="#x1-1180002.6.10">imported or exported</a>. </p>

<h4 class="subsectionHead"><span class="titlemark">B.1.12</span> <a href="#QQ2-1-201" id="x1-201000B.1.12">New Extension: UnAPKM</a></h4>
<!--l. 51-->
<p class="noindent">Since APKMirror has removed encryption from their APKM files, it’s no longer necessary to decrypt them. As a result, the option to decrypt APKM files has been removed. Instead, this option is now provided by the UnAPKM extension which you can grab from <a href="https://f-droid.org/packages/io.github.muntashirakon.unapkm/">F-Droid</a>. So, if you have an encrypted APKM file and have this extension installed, you can open the file directly in AM. </p>

<h3 class="sectionHead"><span class="titlemark">B.2</span> <a href="#QQ2-1-202" id="x1-202000B.2">v2.5.20 (375)</a></h3>
<!--l. 59-->

<h4 class="subsectionHead"><span class="titlemark">B.2.1</span> <a href="#QQ2-1-203" id="x1-203000B.2.1">Introducing Profiles</a></h4>
<!--l. 60-->
<p class="noindent"><a href="#x1-710002.5">Profiles</a> finally closes the <a href="https://github.com/MuntashirAkon/AppManager/issues/72">related issue</a>. Profiles can be used to execute certain tasks repeatedly without doing everything manually. A profile can be applied (or invoked) either from the <a href="#x1-690002.4">Profiles page</a> or from the home screen by creating shortcuts. There are also some presets which consist of debloating profiles taken from <a href="https://gitlab.com/W1nst0n/universal-android-debloater">Universal Android Debloater</a>. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-204000B.2.1" id="x1-204000B.2.1">Known limitations</a></span></p>
<ul class="itemize1">
<li class="itemize">Exporting rules and applying permissions are not currently working.</li>
<li class="itemize">Profiles are applied for all users.</li>
</ul>
<!--l. 73-->

<h4 class="subsectionHead"><span class="titlemark">B.2.2</span> <a href="#QQ2-1-205" id="x1-205000B.2.2">The Interceptor</a></h4>
<!--l. 74-->
<p class="noindent"><a href="https://github.com/MuntashirAkon/intent-intercept">Intent Intercept</a> works as a man-in-the-middle between source and destination, that is, when you open a file or URL with another app, you can see what is being shared by opening it with Interceptor first. You can also add or modify the intents before sending them to the destination. Additionally, you can double-click on any exportable activities in the Activities tab in the App Details page to open them in the Interceptor to add more configurations. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-206000B.2.2" id="x1-206000B.2.2">Known limitation</a></span> Editing extras is not currently possible. </p>

<h4 class="subsectionHead"><span class="titlemark">B.2.3</span> <a href="#QQ2-1-207" id="x1-207000B.2.3">UnAPKM: DeDRM the APKM files</a></h4>
<!--l. 83-->
<p class="noindent">When I released a small tool called <a href="https://f-droid.org/en/packages/io.github.muntashirakon.unapkm">UnAPKM</a>, I promised that similar feature will be available in App Manager. I am proud to announce that you can open APKM files directly in the App Info page or convert them to APKS or install them directly. </p>

<h4 class="subsectionHead"><span class="titlemark">B.2.4</span> <a href="#QQ2-1-208" id="x1-208000B.2.4">Multiple user</a></h4>
<!--l. 88-->
<p class="noindent">App manager now supports multiple users! For now, this requires root or ADB. But no-root support is also being considered. If you have multiple users enabled and click on an app installed in multiple profiles, an alert prompt will be displayed where you can select the user. </p>

<h4 class="subsectionHead"><span class="titlemark">B.2.5</span> <a href="#QQ2-1-209" id="x1-209000B.2.5">Vive la France!</a></h4>
<!--l. 93-->
<p class="noindent">Thanks to the contributors, we have one more addition to the language club: French. You can add more languages or improve existing translations at <a href="https://hosted.weblate.org/engage/app-manager">Weblate</a>. </p>

<h4 class="subsectionHead"><span class="titlemark">B.2.6</span> <a href="#QQ2-1-210" id="x1-210000B.2.6">Report crashes</a></h4>
<!--l. 97-->
<p class="noindent">If App Manager crashes, you can now easily report the crash from the notifications which opens the share options. Crashes are not reported by App Manager, it only redirects you to your favourite Email client. </p>

<h4 class="subsectionHead"><span class="titlemark">B.2.7</span> <a href="#QQ2-1-211" id="x1-211000B.2.7">Android 11</a></h4>
<!--l. 101-->
<p class="noindent">Added support for Android 11. Not everything may work as expected though. </p>

<h4 class="subsectionHead"><span class="titlemark">B.2.8</span> <a href="#QQ2-1-212" id="x1-212000B.2.8">App Installer Improvements</a></h4>
<!--l. 105-->

<h5 class="subsubsectionHead"><span class="titlemark">B.2.8.1</span> <a href="#QQ2-1-213" id="x1-213000B.2.8.1">Set installation locations</a></h5>
<!--l. 106-->
<p class="noindent">In settings page, you can set install locations such as auto (default), internal only and prefer external. </p>

<h5 class="subsubsectionHead"><span class="titlemark">B.2.8.2</span> <a href="#QQ2-1-214" id="x1-214000B.2.8.2">Set APK installer</a></h5>
<!--l. 109-->
<p class="noindent">In settings page, you can also set default APK installer (root/ADB only) instead of App Manager. </p>

<h5 class="subsubsectionHead"><span class="titlemark">B.2.8.3</span> <a href="#QQ2-1-215" id="x1-215000B.2.8.3">Multiple users</a></h5>
<!--l. 112-->
<p class="noindent">In settings page, you can allow App Manager to display multiple users during APK installation. </p>

<h5 class="subsubsectionHead"><span class="titlemark">B.2.8.4</span> <a href="#QQ2-1-216" id="x1-216000B.2.8.4">Signing APK files</a></h5>
<!--l. 115-->
<p class="noindent">In settings page, you can choose to sign APK files before installing them. You can also select which signature scheme to use in the <span class="pplri8t-">APK signing</span> option in settings. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-217000B.2.8.4" id="x1-217000B.2.8.4">Known limitation</a></span> Currently, only a generic key is used to sign APK files </p>

<h3 class="sectionHead"><span class="titlemark">B.3</span> <a href="#QQ2-1-218" id="x1-218000B.3">v2.5.17 (368)</a></h3>
<!--l. 122-->

<h4 class="subsectionHead"><span class="titlemark">B.3.1</span> <a href="#QQ2-1-219" id="x1-219000B.3.1">App Installer</a></h4>
<!--l. 123-->
<p class="noindent">As promised, it is now possible to select splits. AM also provides recommendations based on device configurations. If the app is already installed, recommendations are provided based on the installed app. It is also possible to downgrade to a lower version without data loss if the device has root or ADB. But it should be noted that not all app can be downgraded. Installer is also improved to speed up the installation process, especially, for root users. If the app has already been installed and the new (x)apk(s) is newer or older or the same version with a different signature, AM will display a list of changes similar to <span class="pplb8t-">What’s New</span> before prompting the user to install the app. This is useful if the app has introduced tracker components, new permissions, etc. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-220000B.3.1" id="x1-220000B.3.1">Known Limitations</a></span></p>
<ul class="itemize1">
<li class="itemize">Large app can take a long time to fetch app info and therefore it may take a long time display the installation prompt.</li>
<li class="itemize">If the apk is not located in the internal storage, the app has to be cached first which might also take a long time depending on the size of the apk.</li>
</ul>
<!--l. 138-->

<h4 class="subsectionHead"><span class="titlemark">B.3.2</span> <a href="#QQ2-1-221" id="x1-221000B.3.2">Scanner: Replacement for Exodus Page</a></h4>
<!--l. 139-->
<p class="noindent">Exodus page is now replaced with scanner page. <a href="#x1-1200002.7">Scanner page</a> contains not only a list of trackers but also a list of used libraries. This is just a start. In the future, this page will contain more in depth analysis of the app. </p>

<h4 class="subsectionHead"><span class="titlemark">B.3.3</span> <a href="#QQ2-1-222" id="x1-222000B.3.3">Introducing System Config</a></h4>
<!--l. 144-->
<p class="noindent">System Config lists various system configurations and whitelists/blacklists included in Android by either OEM/vendor, AOSP or even some Magisk modules. Root users can access this option from the overflow menu in the main page. There isn’t any official documentation for these options therefore it’s difficult to write a complete documentation for this page. I will gradually add documentations using my own knowledge. However, some functions should be understandable by their name. 
</p>

<h4 class="subsectionHead"><span class="titlemark">B.3.4</span> <a href="#QQ2-1-223" id="x1-223000B.3.4">More Languages</a></h4>
<!--l. 151-->
<p class="noindent">Thanks to the contributors, AM now has more than 12 languages. New languages include Bengali, Hindi, Norwegian, Polish, Russian, Simplified Chinese, Turkish and Ukrainian. </p>

<h4 class="subsectionHead"><span class="titlemark">B.3.5</span> <a href="#QQ2-1-224" id="x1-224000B.3.5">App Info Tab</a></h4>
<!--l. 155-->
<p class="noindent">More tags are added in the <a href="#x1-360002.2.2">app info tab</a> such as <span class="pplb8t-">KeyStore</span> (apps with KeyStore items), <span class="pplb8t-">Systemless app</span> (apps installed via Magisk), <span class="pplb8t-">Running</span> (apps that are running). For external apk, two more options are added namely <span class="pplb8t-">Reinstall</span> and <span class="pplb8t-">Downgrade</span>. Now it is possible to share an apk via Bluetooth. For system apps, it is possible to uninstall updates for root/ADB users. But like the similar option in the system settings, this operation will clear all app data. As stated above, exodus has been replaced with scanner. </p>

<h4 class="subsectionHead"><span class="titlemark">B.3.6</span> <a href="#QQ2-1-225" id="x1-225000B.3.6">Navigation Improvements</a></h4>
<!--l. 162-->
<p class="noindent">It’s now relatively easy to navigate to various UI components using keyboard. You can use up/down button to navigate between list items and tab button to navigate to UI components inside an item. </p>

<h4 class="subsectionHead"><span class="titlemark">B.3.7</span> <a href="#QQ2-1-226" id="x1-226000B.3.7">Running Apps Page</a></h4>
<!--l. 166-->
<p class="noindent">It is now possible to sort and filter processes in this tab. Also, the three big buttons are replaced with an easy-to-use three dot menu. Previously the memory usage was wrong which is fixed in this version. </p>

<h4 class="subsectionHead"><span class="titlemark">B.3.8</span> <a href="#QQ2-1-227" id="x1-227000B.3.8">Built-in Toybox</a></h4>
<!--l. 170-->
<p class="noindent">Toybox (an alternative to busybox) is bundled with AM. Although Android has this utility built-in from API 23, toybox is bundled in order to prevent buggy implementations and to support API &lt; 23. </p>

<h4 class="subsectionHead"><span class="titlemark">B.3.9</span> <a href="#QQ2-1-228" id="x1-228000B.3.9">Component Blocker Improvements</a></h4>
<!--l. 174-->
<p class="noindent">Component blocker seemed to be problematic in the previous version, especially when global component blocking is enabled. The issues are mostly fixed now.</p>
<div class="mdframed" id="mdframed-42"><!--l. 177-->
<p class="noindent"><span class="pplbi8t-">Caution.</span> The component blocking mechanism is no longer compatible with v2.5.6 due to various security issues. If you have this version, upgrade to v2.5.13 or earlier versions first. After that, enable <a href="#x1-1100002.6.9.1">global component blocking</a> and disable it again.</p>

</div>
<h4 class="subsectionHead"><span class="titlemark">B.3.10</span> <a href="#QQ2-1-229" id="x1-229000B.3.10">Improvements in the App Details Page</a></h4>
<!--l. 184-->
<p class="noindent">Value of various app ops depend on their parent app ops. Therefore, when you allow/deny an app op, the parent of the app op gets modified. This fixes the issues some users have been complaining regarding some app ops that couldn’t be changed. </p>
<p class="indent">If an app has the target API 23 or less, its permissions cannot be modified using the <span class="ectt-1000">pm grant</span> <span class="ectt-1000">…</span> command. Therefore, for such apps, option to toggle permission has been disabled. </p>
<p class="indent">The signature tab is improved to support localization. It also displays multiple checksums for a signature. </p>

<h4 class="subsectionHead"><span class="titlemark">B.3.11</span> <a href="#QQ2-1-230" id="x1-230000B.3.11">App Manifest</a></h4>
<!--l. 193-->
<p class="noindent">Manifest no longer crashes if the size of the manifest is too long. Generated manifest are now more accurate than before. </p>

<h3 class="sectionHead"><span class="titlemark">B.4</span> <a href="#QQ2-1-231" id="x1-231000B.4">v2.5.13 (348)</a></h3>
<!--l. 197-->

<h4 class="subsectionHead"><span class="titlemark">B.4.1</span> <a href="#QQ2-1-232" id="x1-232000B.4.1">Bundled App (Split APK)</a></h4>
<!--l. 198-->
<p class="noindent">Bundled app formats such as <span class="pplb8t-">apks</span> and <span class="pplb8t-">xapk</span> are now supported. You can install these apps using the regular installation buttons. For root and adb users, apps are installed using shell, and for non-root users, the platform default method is used. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-233000B.4.1" id="x1-233000B.4.1">Known Limitations</a></span></p>
<ul class="itemize1">
<li class="itemize">Currently <span class="pplri8t-">all</span> splits apks are installed. But this behaviour is going to change in the next release. If you only need a few splits instead of all, extract the <span class="pplb8t-">APKS</span> or <span class="pplb8t-">XAPK</span> file, and then, create a new zip file with your desired split apks and replace the <span class="pplb8t-">ZIP</span> extension with <span class="pplb8t-">APKS</span>. Now, open it with AM.</li>
<li class="itemize">There is no progress dialog to display the installation progress.</li>
</ul>
<!--l. 210-->

<h4 class="subsectionHead"><span class="titlemark">B.4.2</span> <a href="#QQ2-1-234" id="x1-234000B.4.2">Direct Install Support</a></h4>
<!--l. 211-->
<p class="noindent">You can now install <span class="pplb8t-">APK</span>, <span class="pplb8t-">APKS</span> or <span class="pplb8t-">XAPK</span> directly from your favourite browser or file manager. For apps that need updates, a <span class="pplb8t-">What’s New</span> dialog is displayed showing the changes in the new version. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-235000B.4.2" id="x1-235000B.4.2">Known Limitations</a></span></p>
<ul class="itemize1">
<li class="itemize">Downgrade is not yet possible.</li>
<li class="itemize">There is no progress dialog to display the installation progress. If you cannot interact with the current page, wait until the installation is finished.</li>
</ul>
<!--l. 221-->

<h4 class="subsectionHead"><span class="titlemark">B.4.3</span> <a href="#QQ2-1-236" id="x1-236000B.4.3">Remove All Blocking Rules</a></h4>
<!--l. 222-->
<p class="noindent">In the Settings page, a new option is added which can be used to remove all blocking rules configured within App Manager. </p>

<h4 class="subsectionHead"><span class="titlemark">B.4.4</span> <a href="#QQ2-1-237" id="x1-237000B.4.4">App Ops</a></h4>
<ul class="itemize1">
<li class="itemize">App Ops are now generated using a technique similar to AppOpsX. This should decrease the loading time significantly in the App Ops tab.</li>
<li class="itemize">In the App Ops tab, a menu item is added which can be used to list only active app ops without including the default app ops. The preference is saved in the shared preferences.</li>
</ul>
<!--l. 232-->
<p class="noindent"><span class="paragraphHead"><a href="#x1-238000B.4.4" id="x1-238000B.4.4">Known Limitation</a></span> Often the App Ops tab may not be responsive. If that’s the case, restart App Manager. </p>

<h4 class="subsectionHead"><span class="titlemark">B.4.5</span> <a href="#QQ2-1-239" id="x1-239000B.4.5">Enhanced ADB Support</a></h4>
<!--l. 235-->
<p class="noindent">ADB shell commands are now executed using a technique similar to AppOpsX (This is the <span class="pplri8t-">free</span> alternative of AppOps by Rikka.). This should dramatically increase the execution time. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-240000B.4.5" id="x1-240000B.4.5">Known Limitation</a></span> AM can often crash or become not responsive. If that’s the case, restart App Manager. </p>

<h4 class="subsectionHead"><span class="titlemark">B.4.6</span> <a href="#QQ2-1-241" id="x1-241000B.4.6">Filtering in Main Page</a></h4>
<!--l. 241-->
<p class="noindent">Add an option to filter apps that has at least one activity. </p>

<h4 class="subsectionHead"><span class="titlemark">B.4.7</span> <a href="#QQ2-1-242" id="x1-242000B.4.7">Apk Backup/Sharing</a></h4>
<!--l. 244-->
<p class="noindent">Apk files are now saved as <span class="ectt-1000">app name_version.extension</span> instead of <span class="ectt-1000">package.name.extension</span>. </p>

<h4 class="subsectionHead"><span class="titlemark">B.4.8</span> <a href="#QQ2-1-243" id="x1-243000B.4.8">Batch Ops</a></h4>
<ul class="itemize1">
<li class="itemize">Added a foreground service to run batch operations. The result of the operation is displayed in a notification. If an operation has failed for some packages, clicking on the notification will open a dialog box listing the failed packages. There is also a <span class="pplb8t-">Try Again</span> button on the bottom which can be used to perform the operation again for the failed packages.</li>
<li class="itemize">Replaced Linux <span class="pplri8t-">kill</span> with <span class="pplb8t-">force-stop</span>.</li>
</ul>
<!--l. 254-->

<h4 class="subsectionHead"><span class="titlemark">B.4.9</span> <a href="#QQ2-1-244" id="x1-244000B.4.9">Translations</a></h4>
<!--l. 255-->
<p class="noindent">Added German and Portuguese (Brazilian) translations. </p>
<p class="noindent"><span class="paragraphHead"><a href="#x1-245000B.4.9" id="x1-245000B.4.9">Known Limitation</a></span> Not all translations are verified yet. </p>

<h4 class="subsectionHead"><span class="titlemark">B.4.10</span> <a href="#QQ2-1-246" id="x1-246000B.4.10">App Data Backup</a></h4>
<!--l. 260-->
<p class="noindent">Install app only for the current user at the time of restoring backups. Support for split apks is also added. </p>
<p class="indent"><span class="pplri8t-">Data backup feature is now considered unstable. If you encounter any problem, please</span> <span class="pplri8t-">report to me without hesitation.</span> <a id="x1-246001r161"></a></p>
<h2 class="appendixHead"><span class="titlemark">Appendix C</span><br /> <a href="#QQ2-1-247" id="x1-247000C">App Ops</a></h2>
<h3 class="sectionHead"><span class="titlemark">C.1</span> <a href="#QQ2-1-248" id="x1-248000C.1">Background</a></h3>
<!--l. 3-->
<p class="noindent"><span class="pplb8t-">App Ops</span> (short hand for <span class="pplb8t-">Application Operations</span>) are used by Android system (since Android 4.3) to control application permissions. The user <span class="pplri8t-">can</span> control some permissions, but only the permissions that are considered dangerous (and Google thinks knowing your phone number isn’t a dangerous thing). So, app ops seems to be the one we need if we want to install apps like Facebook and it’s Messenger (the latter literary records everything if you live outside the EU) and still want <span class="pplri8t-">some</span> privacy and/or security. Although certain features of app ops were available in Settings and later in hidden settings in older version of Android, it’s completely hidden in newer versions of Android and is continued to be kept hidden. Now, any app with <span class="pplb8t-">android.Manifest.permission.GET_APP_OPS_STATS</span> permission can get the app ops information for other applications but this permission is hidden from users and can only be enabled using ADB or root. Still, the app with this permission cannot grant or revoke permissions (actually mode of operation) for apps other than itself (with limited capacity, of course). To modify the ops of other app, the app needs <span class="pplb8t-">android.Manifest.permission.UPDATE_APP_OPS_STATS</span> permissions which isn’t accessible via <span class="ectt-1000">pm</span> command. So, you cannot grant it via root or ADB, the permission is only granted to the system apps. There are very few apps who support disabling permissions via app ops. The best one to my knowledge is <a href="https://github.com/8enet/AppOpsX">AppOpsX</a>. The main (visible) difference between my app (AppManager) and this app is that the latter also provides you the ability to revoke internet permissions (by writing ip tables). One crucial problem that I faced during the development of the app ops API is the lack of documentation in English language. </p>

<h3 class="sectionHead"><span class="titlemark">C.2</span> <a href="#QQ2-1-249" id="x1-249000C.2">Introduction to App Ops</a></h3>
<!--l. 22-->

<figure class="figure"><a id="x1-249001r0"></a> <!--l. 22-->
<p class="noindent"><img src="../images/appops.png" alt="PIC" style="width:83.44%" /></p>
<figcaption class="caption"><span class="id">Figure C.0:</span><span class="content">How app ops work</span></figcaption>
<!--tex4ht:label?: x1-249001r0 -->
<!--l. 27-->

</figure>
<!--l. 29-->
<p class="indent">Figure <a href="#x1-249001r0">C.0</a> describes the process of changing and processing permission. <a href="#x1-250000C.3">AppOpsManager</a> can be used to manage permissions in Settings app. <span class="pplb8t-">AppOpsManager</span> is also useful in determining if a certain permission (or operation) is granted to the application. Most of the methods of <span class="pplb8t-">AppOpsManager</span> are accessible to the user app but unlike a system app, it can only be used to check permissions for any app or for the app itself and start or terminating certain operations. Moreover, not all operations are actually accessible from this Java class. <span class="pplb8t-">AppOpsManager</span> holds all the necessary constants such as <a href="#x1-251000C.3.1"><span class="ectt-1000">OP_*</span></a>, <span class="ectt-1000">OPSTR_*</span>, <a href="#x1-252000C.3.2"><span class="ectt-1000">MODE_*</span></a> which describes operation code, operation string and mode of operations respectively. It also holds necessary data structures such as <a href="#x1-253000C.3.3">PackageOps</a> and <span class="pplb8t-">OpEntry</span>. <span class="pplb8t-">PackageOps</span> holds <span class="pplb8t-">OpEntry</span> for a package, and <span class="pplb8t-">OpEntry</span>, as the name suggests, describes each operation. </p>
<p class="indent"><span class="ectt-1000">AppOpService</span> is completely hidden from a user application but accessible to the system applications. As it can be seen in Figure <a href="#x1-249001r0">C.0</a>, this is the class that does the actual management stuff. It contains data structures such as <span class="pplb8t-">Ops</span> to store basic package info and <span class="pplb8t-">Op</span> which is similar to <span class="pplb8t-">OpEntry</span> of <span class="pplb8t-">AppOpsManager</span>. It also has <span class="pplb8t-">Shell</span> which is actually the source code of the <a href="#x1-258000C.6"><span class="pplri8t-">appops</span> command line tool</a>. It writes configurations to or read configurations from <a href="#x1-257000C.5"><span class="ectt-1000">/data/system/appops.xml</span></a>. System services calls <span class="pplb8t-">AppOpsService</span> to find out what an application is allowed and what is not allowed to perform, and <span class="pplb8t-">AppOpsService</span> determines these permissions by parsing <span class="ectt-1000">/data/system/appops.xml</span>. If no custom values are present in <span class="pplri8t-">appops.xml</span>, it returns the default mode available in <span class="pplb8t-">AppOpsManager</span>.</p>
<h3 class="sectionHead"><span class="titlemark">C.3</span> <a href="#QQ2-1-251" id="x1-250000C.3">AppOpsManager</a></h3>
<!--l. 51-->
<p class="noindent"><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/AppOpsManager.java">AppOpsManager</a> stands for application operations manager. It consists of various constants and classes to modify app operations. </p>
<p class="noindent"><span class="pplri8t-">See also:</span> <a href="https://developer.android.com/reference/android/app/AppOpsManager"><span class="pplri8t-">AppOpsManager documentation</span></a> </p>

<h4 class="subsectionHead"><span class="titlemark">C.3.1</span> <a href="#QQ2-1-252" id="x1-251000C.3.1"><span class="ectt-1000">OP_*</span> Constants</a></h4>
<!--l. 57-->
<p class="noindent"><span class="ectt-1000">OP_*</span> are the integer constants starting from <span class="ectt-1000">0</span>. <span class="ectt-1000">OP_NONE</span> implies that no operations are specified whereas <span class="ectt-1000">_NUM_OP</span> denotes the number of operations defined in <span class="ectt-1000">OP_*</span> prefix. While they denote each operation, the operations are not necessarily unique. In fact, there are many operations that are actually a single operation denoted by multiple <span class="ectt-1000">OP_*</span> constant (possibly for future use). Vendors may define their own op based on their requirements. MIUI is one of the vendors who are known to do that. </p>
<p class="indent"><a id="x1-251031r1"></a></p>
<figure class="float">
<div class="fancyvrb" id="fancyvrb11"><a id="x1-251012r1"></a><span id="textcolor50"><span class="ectt-1000">public</span></span><span class="ectt-1000"> </span><span id="textcolor51"><span class="ectt-1000">static</span></span><span class="ectt-1000"> </span><span id="textcolor52"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor53"><span class="ectt-1000">int</span></span><span class="ectt-1000"> OP_NONE</span><span class="ectt-1000"> </span><span id="textcolor54"><span class="ectt-1000">=</span></span><span class="ectt-1000"> </span><span id="textcolor55"><span class="ectt-1000">-</span></span><span id="textcolor56"><span class="ectt-1000">1</span></span><span class="ectt-1000">;</span><br class="fancyvrb" /> <a id="x1-251014r2"></a><span id="textcolor57"><span class="ectt-1000">public</span></span><span class="ectt-1000"> </span><span id="textcolor58"><span class="ectt-1000">static</span></span><span class="ectt-1000"> </span><span id="textcolor59"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor60"><span class="ectt-1000">int</span></span><span class="ectt-1000"> OP_COARSE_LOCATION</span><span class="ectt-1000"> </span><span id="textcolor61"><span class="ectt-1000">=</span></span><span class="ectt-1000"> </span><span id="textcolor62"><span class="ectt-1000">0</span></span><span class="ectt-1000">;</span><br class="fancyvrb" /> <a id="x1-251016r3"></a><span id="textcolor63"><span class="ectt-1000">public</span></span><span class="ectt-1000"> </span><span id="textcolor64"><span class="ectt-1000">static</span></span><span class="ectt-1000"> </span><span id="textcolor65"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor66"><span class="ectt-1000">int</span></span><span class="ectt-1000"> OP_FINE_LOCATION</span><span class="ectt-1000"> </span><span id="textcolor67"><span class="ectt-1000">=</span></span><span class="ectt-1000"> </span><span id="textcolor68"><span class="ectt-1000">1</span></span><span class="ectt-1000">;</span><br class="fancyvrb" /> <a id="x1-251018r4"></a><span id="textcolor69"><span class="ectt-1000">public</span></span><span class="ectt-1000"> </span><span id="textcolor70"><span class="ectt-1000">static</span></span><span class="ectt-1000"> </span><span id="textcolor71"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor72"><span class="ectt-1000">int</span></span><span class="ectt-1000"> OP_GPS</span><span class="ectt-1000"> </span><span id="textcolor73"><span class="ectt-1000">=</span></span><span class="ectt-1000"> </span><span id="textcolor74"><span class="ectt-1000">2</span></span><span class="ectt-1000">;</span><br class="fancyvrb" /> <a id="x1-251020r5"></a><span id="textcolor75"><span class="ectt-1000">public</span></span><span class="ectt-1000"> </span><span id="textcolor76"><span class="ectt-1000">static</span></span><span class="ectt-1000"> </span><span id="textcolor77"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor78"><span class="ectt-1000">int</span></span><span class="ectt-1000"> OP_VIBRATE</span><span class="ectt-1000"> </span><span id="textcolor79"><span class="ectt-1000">=</span></span><span class="ectt-1000"> </span><span id="textcolor80"><span class="ectt-1000">3</span></span><span class="ectt-1000">;</span><br class="fancyvrb" /> <a id="x1-251022r6"></a><span class="ectt-1000">...</span><br class="fancyvrb" /> <a id="x1-251024r7"></a><span id="textcolor81"><span class="ectt-1000">public</span></span><span class="ectt-1000"> </span><span id="textcolor82"><span class="ectt-1000">static</span></span><span class="ectt-1000"> </span><span id="textcolor83"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor84"><span class="ectt-1000">int</span></span><span class="ectt-1000"> OP_READ_DEVICE_IDENTIFIERS</span><span class="ectt-1000"> </span><span id="textcolor85"><span class="ectt-1000">=</span></span><span class="ectt-1000"> </span><span id="textcolor86"><span class="ectt-1000">89</span></span><span class="ectt-1000">;</span><br class="fancyvrb" /> <a id="x1-251026r8"></a><span id="textcolor87"><span class="ectt-1000">public</span></span><span class="ectt-1000"> </span><span id="textcolor88"><span class="ectt-1000">static</span></span><span class="ectt-1000"> </span><span id="textcolor89"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor90"><span class="ectt-1000">int</span></span><span class="ectt-1000"> OP_ACCESS_MEDIA_LOCATION</span><span class="ectt-1000"> </span><span id="textcolor91"><span class="ectt-1000">=</span></span><span class="ectt-1000"> </span><span id="textcolor92"><span class="ectt-1000">90</span></span><span class="ectt-1000">;</span><br class="fancyvrb" /> <a id="x1-251028r9"></a><span id="textcolor93"><span class="ectt-1000">public</span></span><span class="ectt-1000"> </span><span id="textcolor94"><span class="ectt-1000">static</span></span><span class="ectt-1000"> </span><span id="textcolor95"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor96"><span class="ectt-1000">int</span></span><span class="ectt-1000"> OP_ACTIVATE_PLATFORM_VPN</span><span class="ectt-1000"> </span><span id="textcolor97"><span class="ectt-1000">=</span></span><span class="ectt-1000"> </span><span id="textcolor98"><span class="ectt-1000">91</span></span><span class="ectt-1000">;</span><br class="fancyvrb" /> <a id="x1-251030r10"></a><span id="textcolor99"><span class="ectt-1000">public</span></span><span class="ectt-1000"> </span><span id="textcolor100"><span class="ectt-1000">static</span></span><span class="ectt-1000"> </span><span id="textcolor101"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor102"><span class="ectt-1000">int</span></span><span class="ectt-1000"> _NUM_OP</span><span class="ectt-1000"> </span><span id="textcolor103"><span class="ectt-1000">=</span></span><span class="ectt-1000"> </span><span id="textcolor104"><span class="ectt-1000">92</span></span><span class="ectt-1000">;</span></div>
<figcaption class="caption"><span class="id">Listing 1:</span><span class="content">Sneak-peek of <span class="ectt-1000">OP_*</span></span></figcaption>
<!--tex4ht:label?: x1-251031r1 --></figure>
<!--l. 80-->
<p class="indent">Whether an operation is unique is defined by <span class="ectt-1000">sOpToSwitch</span>. It maps each operation to another operation or to itself (if it’s a unique operation). For instance, <span class="ectt-1000">OP_FINE_LOCATION</span> and <span class="ectt-1000">OP_GPS</span> are mapped to <span class="ectt-1000">OP_COARSE_LOCATION</span>. </p>
<p class="indent">Each operation has a private name which are described by <span class="ectt-1000">sOpNames</span>. These names are usually the same names as the constants without the <span class="ectt-1000">OP_</span> prefix. Some operations have public names as well which are described by <span class="ectt-1000">sOpToString</span>. For instance, <span class="ectt-1000">OP_COARSE_LOCATION</span> has the public name <span class="pplb8t-">android:coarse_location</span>. </p>
<p class="indent">As a gradual process of moving permissions to app ops, there are already many permissions that are defined under some operations. These permissions are mapped in <span class="ectt-1000">sOpPerms</span>. For example, the permission <span class="pplb8t-">android.Manifest.permission.ACCESS_COARSE_LOCATION</span> is mapped to <span class="ectt-1000">OP_COARSE_LOCATION</span>. Some operations may not have any associated permissions which have <span class="ectt-1000">null</span> values. 
</p>
<p class="indent">As described in the previous section, operations that are configured for an app are stored at <a href="#x1-257000C.5"><span class="ectt-1000">/data/system/appops.xml</span></a>. If an operation is not configured, then whether system will allow that operation is determined from <span class="ectt-1000">sOpDefaultMode</span>. It lists the <span class="pplri8t-">default mode</span> for each operation.</p>
<h4 class="subsectionHead"><span class="titlemark">C.3.2</span> <a href="#QQ2-1-254" id="x1-252000C.3.2"><span class="ectt-1000">MODE_*</span> Constants</a></h4>
<!--l. 100-->
<p class="noindent"><span class="ectt-1000">MODE_*</span> constants also integer constants starting from <span class="ectt-1000">0</span>. These constants are assigned to each operation describing whether an app is authorised to perform that operation. These modes usually have associated names such as <span class="pplb8t-">allow</span> for <span class="ectt-1000">MODE_ALLOWED</span>, <span class="pplb8t-">ignore</span> for <span class="ectt-1000">MODE_IGNORED</span>, <span class="pplb8t-">deny</span> for <span class="ectt-1000">MODE_ERRORED</span> (a rather misnomer), <span class="pplb8t-">default</span> for <span class="ectt-1000">MODE_DEFAULT</span> and <span class="pplb8t-">foreground</span> for <span class="ectt-1000">MODE_FOREGROUND</span>. </p>
<p class="indent"></p>
<ol class="enumerate1">
<li class="enumerate" id="x1-252002x0"><span class="ectt-1000">MODE_ALLOWED</span><span class="pplb8t-">.</span> The app is allowed to perform the given operation</li>
<li class="enumerate" id="x1-252004x1"><span class="ectt-1000">MODE_IGNORED</span><span class="pplb8t-">.</span> The app is not allowed to perform the given operation, and any attempt to perform the operation should <span class="pplri8t-">silently fail</span>, i.e. it should not cause the app to crash</li>
<li class="enumerate" id="x1-252006x2"><span class="ectt-1000">MODE_ERRORED</span><span class="pplb8t-">.</span> The app is not allowed to perform the given operation, and this attempt should cause it to have a fatal error, typically a <span class="ectt-1000">SecurityException</span></li>
<li class="enumerate" id="x1-252008x3"><span class="ectt-1000">MODE_DEFAULT</span><span class="pplb8t-">.</span> The app should use its default security check, specified in <span class="ectt-1000">AppOpsManager</span></li>
<li class="enumerate" id="x1-252010x4"><span class="ectt-1000">MODE_FOREGROUND</span><span class="pplb8t-">.</span> Special mode that means “allow only when app is in foreground.” This mode was added in Android 10</li>
<li class="enumerate" id="x1-252012x5"><span class="ectt-1000">MODE_ASK</span><span class="pplb8t-">.</span> This is a custom mode used by MIUI whose uses are unknown.</li>
</ol>
<!--l. 118-->

<h4 class="subsectionHead"><span class="titlemark">C.3.3</span> <a href="#QQ2-1-255" id="x1-253000C.3.3">PackageOps</a></h4>
<!--l. 119-->
<p class="noindent"><span class="pplb8t-">AppOpsManager.PackageOps</span> is a data structure to store all the <span class="pplb8t-">OpEntry</span> for a package. In simple terms, it stores all the customised operations for a package. </p>
<p class="indent"><a id="x1-253019r2"></a></p>
<figure class="float">
<div class="fancyvrb" id="fancyvrb12"><a id="x1-253008r1"></a><span id="textcolor105"><span class="ectt-1000">public</span></span><span class="ectt-1000"> </span><span id="textcolor106"><span class="ectt-1000">static</span></span><span class="ectt-1000"> </span><span id="textcolor107"><span class="ectt-1000">class</span></span><span class="ectt-1000"> </span><span id="textcolor108"><span class="ectt-1000">PackageOps</span></span><span class="ectt-1000"> </span><span id="textcolor109"><span class="ectt-1000">implements</span></span><span class="ectt-1000"> Parcelable</span><span class="ectt-1000"> {</span><br class="fancyvrb" /> <a id="x1-253010r2"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span id="textcolor110"><span class="ectt-1000">private</span></span><span class="ectt-1000"> </span><span id="textcolor111"><span class="ectt-1000">final</span></span><span class="ectt-1000"> String</span><span class="ectt-1000"> mPackageName;</span><br class="fancyvrb" /> <a id="x1-253012r3"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span id="textcolor112"><span class="ectt-1000">private</span></span><span class="ectt-1000"> </span><span id="textcolor113"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor114"><span class="ectt-1000">int</span></span><span class="ectt-1000"> mUid;</span><br class="fancyvrb" /> <a id="x1-253014r4"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span id="textcolor115"><span class="ectt-1000">private</span></span><span class="ectt-1000"> </span><span id="textcolor116"><span class="ectt-1000">final</span></span><span class="ectt-1000"> List</span><span id="textcolor117"><span class="ectt-1000">&lt;</span></span><span class="ectt-1000">OpEntry</span><span id="textcolor118"><span class="ectt-1000">&gt;</span></span><span class="ectt-1000"> mEntries;</span><br class="fancyvrb" /> <a id="x1-253016r5"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> ...</span><br class="fancyvrb" /> <a id="x1-253018r6"></a><span class="ectt-1000">}</span></div>
<figcaption class="caption"><span class="id">Listing 2:</span><span class="content">Class <span class="ectt-1000">PackageOps</span></span></figcaption>
<!--tex4ht:label?: x1-253019r2 --></figure>
<!--l. 135-->
<p class="indent">As can be seen in Listing <a href="#x1-253019r2">2</a>, it stores all <span class="pplb8t-">OpEntry</span> for a package as well as the corresponding package name and its kernel user ID.</p>
<h4 class="subsectionHead"><span class="titlemark">C.3.4</span> <a href="#QQ2-1-257" id="x1-254000C.3.4">OpEntry</a></h4>
<!--l. 139-->
<p class="noindent"><span class="pplb8t-">AppOpsManager.OpEntry</span> is a data structure that stores a single operation for any package. </p>
<p class="indent"><a id="x1-254034r3"></a></p>
<figure class="float">
<div class="fancyvrb" id="fancyvrb13"><a id="x1-254013r1"></a><span id="textcolor119"><span class="ectt-1000">public</span></span><span class="ectt-1000"> </span><span id="textcolor120"><span class="ectt-1000">static</span></span><span class="ectt-1000"> </span><span id="textcolor121"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor122"><span class="ectt-1000">class</span></span><span class="ectt-1000"> </span><span id="textcolor123"><span class="ectt-1000">OpEntry</span></span><span class="ectt-1000"> </span><span id="textcolor124"><span class="ectt-1000">implements</span></span><span class="ectt-1000"> Parcelable</span><span class="ectt-1000"> {</span><br class="fancyvrb" /> <a id="x1-254015r2"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span id="textcolor125"><span class="ectt-1000">private</span></span><span class="ectt-1000"> </span><span id="textcolor126"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor127"><span class="ectt-1000">int</span></span><span class="ectt-1000"> mOp;</span><br class="fancyvrb" /> <a id="x1-254017r3"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span id="textcolor128"><span class="ectt-1000">private</span></span><span class="ectt-1000"> </span><span id="textcolor129"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor130"><span class="ectt-1000">boolean</span></span><span class="ectt-1000"> mRunning;</span><br class="fancyvrb" /> <a id="x1-254019r4"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span id="textcolor131"><span class="ectt-1000">private</span></span><span class="ectt-1000"> </span><span id="textcolor132"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor133"><span class="ectt-1000">@Mode</span></span><span class="ectt-1000"> </span><span id="textcolor134"><span class="ectt-1000">int</span></span><span class="ectt-1000"> mMode;</span><br class="fancyvrb" /> <a id="x1-254021r5"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span id="textcolor135"><span class="ectt-1000">private</span></span><span class="ectt-1000"> </span><span id="textcolor136"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor137"><span class="ectt-1000">@Nullable</span></span><span class="ectt-1000"> LongSparseLongArray</span><span class="ectt-1000"> mAccessTimes;</span><br class="fancyvrb" /> <a id="x1-254023r6"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span id="textcolor138"><span class="ectt-1000">private</span></span><span class="ectt-1000"> </span><span id="textcolor139"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor140"><span class="ectt-1000">@Nullable</span></span><span class="ectt-1000"> LongSparseLongArray</span><span class="ectt-1000"> mRejectTimes;</span><br class="fancyvrb" /> <a id="x1-254025r7"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span id="textcolor141"><span class="ectt-1000">private</span></span><span class="ectt-1000"> </span><span id="textcolor142"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor143"><span class="ectt-1000">@Nullable</span></span><span class="ectt-1000"> LongSparseLongArray</span><span class="ectt-1000"> mDurations;</span><br class="fancyvrb" /> <a id="x1-254027r8"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span id="textcolor144"><span class="ectt-1000">private</span></span><span class="ectt-1000"> </span><span id="textcolor145"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor146"><span class="ectt-1000">@Nullable</span></span><span class="ectt-1000"> LongSparseLongArray</span><span class="ectt-1000"> mProxyUids;</span><br class="fancyvrb" /> <a id="x1-254029r9"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span id="textcolor147"><span class="ectt-1000">private</span></span><span class="ectt-1000"> </span><span id="textcolor148"><span class="ectt-1000">final</span></span><span class="ectt-1000"> </span><span id="textcolor149"><span class="ectt-1000">@Nullable</span></span><span class="ectt-1000"> LongSparseArray</span><span id="textcolor150"><span class="ectt-1000">&lt;</span></span><span class="ectt-1000">String</span><span id="textcolor151"><span class="ectt-1000">&gt;</span></span><span class="ectt-1000"> mProxyPackageNames;</span><br class="fancyvrb" /> <a id="x1-254031r10"></a><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> ...</span><br class="fancyvrb" /> <a id="x1-254033r11"></a><span class="ectt-1000">}</span></div>
<figcaption class="caption"><span class="id">Listing 3:</span><span class="content">Class <span class="ectt-1000">OpEntry</span></span></figcaption>
<!--tex4ht:label?: x1-254034r3 --></figure>
<!--l. 158-->
<p class="indent">Here:</p>
<ul class="itemize1">
<li class="itemize"><span class="ectt-1000">mOp</span>: Denotes one of the <a href="#x1-251000C.3.1"><span class="ectt-1000">OP_*</span> constants</a></li>
<li class="itemize"><span class="ectt-1000">mRunning</span>: Whether the operation is in progress (i.e. the operation has started but not finished yet). Not all operations can be started or finished this way</li>
<li class="itemize"><span class="ectt-1000">mMOde</span>: One of the <a href="#x1-252000C.3.2"><span class="ectt-1000">MODE_*</span> constants</a></li>
<li class="itemize"><span class="ectt-1000">mAccessTimes</span>: Stores all the available access times</li>
<li class="itemize"><span class="ectt-1000">mRejectTimes</span>: Stores all the available reject times</li>
<li class="itemize"><span class="ectt-1000">mDurations</span>: All available access durations, checking this with <span class="ectt-1000">mRunning</span> will tell you for how long the app is performing a certain app operation</li>
<li class="itemize"><span class="ectt-1000">mProxyUids</span>: No documentation found</li>
<li class="itemize"><span class="ectt-1000">mProxyPackageNames:</span> No documentation found</li>
</ul>
<h4 class="subsectionHead"><span class="titlemark">C.3.5</span> <a href="#QQ2-1-259" id="x1-255000C.3.5">Usage</a></h4>
<!--l. 173-->
<p class="noindent">TODO </p>

<h3 class="sectionHead"><span class="titlemark">C.4</span> <a href="#QQ2-1-260" id="x1-256000C.4">AppOpsService</a></h3>
<!--l. 176-->
<p class="noindent">TODO </p>

<h3 class="sectionHead"><span class="titlemark">C.5</span> <a href="#QQ2-1-261" id="x1-257000C.5">appops.xml</a></h3>
<!--l. 180-->
<p class="noindent">Latest <span class="ectt-1000">appops.xml</span> has the following format: (This DTD is made by me and by no means perfect, has compatibility issues.) </p>
<p class="indent"></p>
<div class="fancyvrb" id="fancyvrb14"><a id="x1-257002r1"></a><span class="ectt-1000">&lt;!DOCTYPE</span><span class="ectt-1000"> app-ops</span><span class="ectt-1000"> [</span><br class="fancyvrb" /> <a id="x1-257004r2"></a><br class="fancyvrb" /> <a id="x1-257006r3"></a><span class="ectt-1000">&lt;!ELEMENT</span><span class="ectt-1000"> app-ops</span><span class="ectt-1000"> (uid|pkg)*&gt;</span><br class="fancyvrb" /> <a id="x1-257008r4"></a><span class="ectt-1000">&lt;!ATTLIST</span><span class="ectt-1000"> app-ops</span><span class="ectt-1000"> v</span><span class="ectt-1000"> CDATA</span><span class="ectt-1000"> #IMPLIED&gt;</span><br class="fancyvrb" /> <a id="x1-257010r5"></a><br class="fancyvrb" /> <a id="x1-257012r6"></a><span class="ectt-1000">&lt;!ELEMENT</span><span class="ectt-1000"> uid</span><span class="ectt-1000"> (op)*&gt;</span><br class="fancyvrb" /> <a id="x1-257014r7"></a><span class="ectt-1000">&lt;!ATTLIST</span><span class="ectt-1000"> uid</span><span class="ectt-1000"> n</span><span class="ectt-1000"> CDATA</span><span class="ectt-1000"> #REQUIRED&gt;</span><br class="fancyvrb" /> <a id="x1-257016r8"></a><br class="fancyvrb" /> <a id="x1-257018r9"></a><span class="ectt-1000">&lt;!ELEMENT</span><span class="ectt-1000"> pkg</span><span class="ectt-1000"> (uid)*&gt;</span><br class="fancyvrb" /> <a id="x1-257020r10"></a><span class="ectt-1000">&lt;!ATTLIST</span><span class="ectt-1000"> pkg</span><span class="ectt-1000"> n</span><span class="ectt-1000"> CDATA</span><span class="ectt-1000"> #REQUIRED&gt;</span><br class="fancyvrb" /> <a id="x1-257022r11"></a><br class="fancyvrb" /> <a id="x1-257024r12"></a><span class="ectt-1000">&lt;!ELEMENT</span><span class="ectt-1000"> uid</span><span class="ectt-1000"> (op)*&gt;</span><br class="fancyvrb" /> <a id="x1-257026r13"></a><span class="ectt-1000">&lt;!ATTLIST</span><span class="ectt-1000"> uid</span><br class="fancyvrb" /> <a id="x1-257028r14"></a><span class="ectt-1000">n</span><span class="ectt-1000"> CDATA</span><span class="ectt-1000"> #REQUIRED</span><br class="fancyvrb" /> <a id="x1-257030r15"></a><span class="ectt-1000">p</span><span class="ectt-1000"> CDATA</span><span class="ectt-1000"> #IMPLIED&gt;</span><br class="fancyvrb" /> <a id="x1-257032r16"></a><br class="fancyvrb" /> <a id="x1-257034r17"></a><span class="ectt-1000">&lt;!ELEMENT</span><span class="ectt-1000"> op</span><span class="ectt-1000"> (st)*&gt;</span><br class="fancyvrb" /> <a id="x1-257036r18"></a><span class="ectt-1000">&lt;!ATTLIST</span><span class="ectt-1000"> op</span><br class="fancyvrb" /> <a id="x1-257038r19"></a><span class="ectt-1000">n</span><span class="ectt-1000"> CDATA</span><span class="ectt-1000"> #REQUIRED</span><br class="fancyvrb" /> <a id="x1-257040r20"></a><span class="ectt-1000">m</span><span class="ectt-1000"> CDATA</span><span class="ectt-1000"> #REQUIRED&gt;</span><br class="fancyvrb" /> <a id="x1-257042r21"></a><br class="fancyvrb" /> <a id="x1-257044r22"></a><span class="ectt-1000">&lt;!ELEMENT</span><span class="ectt-1000"> st</span><span class="ectt-1000"> EMPTY&gt;</span><br class="fancyvrb" /> <a id="x1-257046r23"></a><span class="ectt-1000">&lt;!ATTLIST</span><span class="ectt-1000"> st</span><br class="fancyvrb" /> <a id="x1-257048r24"></a><span class="ectt-1000">n</span><span class="ectt-1000"> CDATA</span><span class="ectt-1000"> #REQUIRED</span><br class="fancyvrb" /> <a id="x1-257050r25"></a><span class="ectt-1000">t</span><span class="ectt-1000"> CDATA</span><span class="ectt-1000"> #IMPLIED</span><br class="fancyvrb" /> <a id="x1-257052r26"></a><span class="ectt-1000">r</span><span class="ectt-1000"> CDATA</span><span class="ectt-1000"> #IMPLIED</span><br class="fancyvrb" /> <a id="x1-257054r27"></a><span class="ectt-1000">d</span><span class="ectt-1000"> CDATA</span><span class="ectt-1000"> #IMPLIED</span><br class="fancyvrb" /> <a id="x1-257056r28"></a><span class="ectt-1000">pp</span><span class="ectt-1000"> CDATA</span><span class="ectt-1000"> #IMPLIED</span><br class="fancyvrb" /> <a id="x1-257058r29"></a><span class="ectt-1000">pu</span><span class="ectt-1000"> CDATA</span><span class="ectt-1000"> #IMPLIED&gt;</span><br class="fancyvrb" /> <a id="x1-257060r30"></a><br class="fancyvrb" /> <a id="x1-257062r31"></a><span class="ectt-1000">]&gt;</span></div>
<!--l. 216-->
<p class="indent">The instruction below follows the exact order given above:</p>
<ul class="itemize1">
<li class="itemize"><span class="ectt-1000">app-ops</span>: The root element. It can contain any number of <span class="ectt-1000">pkg</span> or package <span class="ectt-1000">uid</span>
<ul class="itemize2">
<li class="itemize"><span class="ectt-1000">v</span>: (optional, integer) The version number (default: <span class="ectt-1000">NO_VERSION</span> or <span class="ectt-1000">-1</span>)</li>
</ul>
</li>
<li class="itemize"><span class="ectt-1000">pkg</span>: Stores package info. It can contain any number of <span class="ectt-1000">uid</span>
<ul class="itemize2">
<li class="itemize"><span class="ectt-1000">n</span>: (required, string) Name of the package</li>
</ul>
</li>
<li class="itemize">Package <span class="ectt-1000">uid</span>: Stores package or packages info
<ul class="itemize2">
<li class="itemize"><span class="ectt-1000">n</span>: (required, integer) The user ID</li>
</ul>
</li>
<li class="itemize"><span class="ectt-1000">uid</span>: The package user ID. It can contain any number of <span class="ectt-1000">op</span>
<ul class="itemize2">
<li class="itemize"><span class="ectt-1000">n</span>: (required, integer) The user ID</li>
<li class="itemize"><span class="ectt-1000">p</span>: (optional, boolean) Is the app is a private/system app</li>
</ul>
</li>
<li class="itemize"><span class="ectt-1000">op</span>: The operation, can contain <span class="ectt-1000">st</span> or nothing at all
<ul class="itemize2">
<li class="itemize"><span class="ectt-1000">n</span>: (required, integer) The op name in integer, i.e. AppOpsManager.OP_*</li>
<li class="itemize"><span class="ectt-1000">m</span>: (required, integer) The op mode, i.e. AppOpsManager.MODE_*</li>
</ul>
</li>
<li class="itemize"><span class="ectt-1000">st</span>: State of operation: whether the operation is accessed, rejected or running (not available on old versions)
<ul class="itemize2">
<li class="itemize"><span class="ectt-1000">n</span>: (required, long) Key containing flags and uid</li>
<li class="itemize"><span class="ectt-1000">t</span>: (optional, long) Access time (default: <span class="ectt-1000">0</span>)</li>
<li class="itemize"><span class="ectt-1000">r</span>: (optional, long) Reject time (default: <span class="ectt-1000">0</span>)</li>
<li class="itemize"><span class="ectt-1000">d</span>: (optional, long) Access duration (default: <span class="ectt-1000">0</span>)</li>
<li class="itemize"><span class="ectt-1000">pp</span>: (optional, string) Proxy package name</li>
<li class="itemize"><span class="ectt-1000">pu</span>: (optional, integer) Proxy package uid</li>
</ul>
</li>
</ul>
<!--l. 256-->
<p class="indent">This definition can be found at <a href="https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/appop/AppOpsService.java">AppOpsService</a>. </p>

<h3 class="sectionHead"><span class="titlemark">C.6</span> <a href="#QQ2-1-262" id="x1-258000C.6">Command Line Interface</a></h3>
<!--l. 260-->
<p class="noindent"><span class="ectt-1000">appops</span> or <span class="ectt-1000">cmd appops</span> (on latest versions) can be accessible via ADB or root. This is an easier method to get or update any operation for a package (provided the package name is known). The help page of this command is self-explanatory: </p>
<p class="indent"></p>
<div class="fancyvrb" id="fancyvrb15"><a id="x1-258002r1"></a><span class="ectt-1000">AppOps</span><span class="ectt-1000"> service</span><span class="ectt-1000"> (appops)</span><span class="ectt-1000"> commands:</span><br class="fancyvrb" /> <a id="x1-258004r2"></a><span class="ectt-1000">help</span><br class="fancyvrb" /> <a id="x1-258006r3"></a><span class="ectt-1000">Print</span><span class="ectt-1000"> this</span><span class="ectt-1000"> help</span><span class="ectt-1000"> text.</span><br class="fancyvrb" /> <a id="x1-258008r4"></a><span class="ectt-1000">start</span><span class="ectt-1000"> [--user</span><span class="ectt-1000"> &lt;USER_ID&gt;]</span><span class="ectt-1000"> &lt;PACKAGE</span><span class="ectt-1000"> |</span><span class="ectt-1000"> UID&gt;</span><span class="ectt-1000"> &lt;OP&gt;</span><br class="fancyvrb" /> <a id="x1-258010r5"></a><span class="ectt-1000">Starts</span><span class="ectt-1000"> a</span><span class="ectt-1000"> given</span><span class="ectt-1000"> operation</span><span class="ectt-1000"> for</span><span class="ectt-1000"> a</span><span class="ectt-1000"> particular</span><span class="ectt-1000"> application.</span><br class="fancyvrb" /> <a id="x1-258012r6"></a><span class="ectt-1000">stop</span><span class="ectt-1000"> [--user</span><span class="ectt-1000"> &lt;USER_ID&gt;]</span><span class="ectt-1000"> &lt;PACKAGE</span><span class="ectt-1000"> |</span><span class="ectt-1000"> UID&gt;</span><span class="ectt-1000"> &lt;OP&gt;</span><br class="fancyvrb" /> <a id="x1-258014r7"></a><span class="ectt-1000">Stops</span><span class="ectt-1000"> a</span><span class="ectt-1000"> given</span><span class="ectt-1000"> operation</span><span class="ectt-1000"> for</span><span class="ectt-1000"> a</span><span class="ectt-1000"> particular</span><span class="ectt-1000"> application.</span><br class="fancyvrb" /> <a id="x1-258016r8"></a><span class="ectt-1000">set</span><span class="ectt-1000"> [--user</span><span class="ectt-1000"> &lt;USER_ID&gt;]</span><span class="ectt-1000"> &lt;[--uid]</span><span class="ectt-1000"> PACKAGE</span><span class="ectt-1000"> |</span><span class="ectt-1000"> UID&gt;</span><span class="ectt-1000"> &lt;OP&gt;</span><span class="ectt-1000"> &lt;MODE&gt;</span><br class="fancyvrb" /> <a id="x1-258018r9"></a><span class="ectt-1000">Set</span><span class="ectt-1000"> the</span><span class="ectt-1000"> mode</span><span class="ectt-1000"> for</span><span class="ectt-1000"> a</span><span class="ectt-1000"> particular</span><span class="ectt-1000"> application</span><span class="ectt-1000"> and</span><span class="ectt-1000"> operation.</span><br class="fancyvrb" /> <a id="x1-258020r10"></a><span class="ectt-1000">get</span><span class="ectt-1000"> [--user</span><span class="ectt-1000"> &lt;USER_ID&gt;]</span><span class="ectt-1000"> &lt;PACKAGE</span><span class="ectt-1000"> |</span><span class="ectt-1000"> UID&gt;</span><span class="ectt-1000"> [&lt;OP&gt;]</span><br class="fancyvrb" /> <a id="x1-258022r11"></a><span class="ectt-1000">Return</span><span class="ectt-1000"> the</span><span class="ectt-1000"> mode</span><span class="ectt-1000"> for</span><span class="ectt-1000"> a</span><span class="ectt-1000"> particular</span><span class="ectt-1000"> application</span><span class="ectt-1000"> and</span><span class="ectt-1000"> optional</span><span class="ectt-1000"> operation.</span><br class="fancyvrb" /> <a id="x1-258024r12"></a><span class="ectt-1000">query-op</span><span class="ectt-1000"> [--user</span><span class="ectt-1000"> &lt;USER_ID&gt;]</span><span class="ectt-1000"> &lt;OP&gt;</span><span class="ectt-1000"> [&lt;MODE&gt;]</span><br class="fancyvrb" /> <a id="x1-258026r13"></a><span class="ectt-1000">Print</span><span class="ectt-1000"> all</span><span class="ectt-1000"> packages</span><span class="ectt-1000"> that</span><span class="ectt-1000"> currently</span><span class="ectt-1000"> have</span><span class="ectt-1000"> the</span><span class="ectt-1000"> given</span><span class="ectt-1000"> op</span><span class="ectt-1000"> in</span><span class="ectt-1000"> the</span><span class="ectt-1000"> given</span><span class="ectt-1000"> mode.</span><br class="fancyvrb" /> <a id="x1-258028r14"></a><span class="ectt-1000">reset</span><span class="ectt-1000"> [--user</span><span class="ectt-1000"> &lt;USER_ID&gt;]</span><span class="ectt-1000"> [&lt;PACKAGE&gt;]</span><br class="fancyvrb" /> <a id="x1-258030r15"></a><span class="ectt-1000">Reset</span><span class="ectt-1000"> the</span><span class="ectt-1000"> given</span><span class="ectt-1000"> application</span><span class="ectt-1000"> or</span><span class="ectt-1000"> all</span><span class="ectt-1000"> applications</span><span class="ectt-1000"> to</span><span class="ectt-1000"> default</span><span class="ectt-1000"> modes.</span><br class="fancyvrb" /> <a id="x1-258032r16"></a><span class="ectt-1000">write-settings</span><br class="fancyvrb" /> <a id="x1-258034r17"></a><span class="ectt-1000">Immediately</span><span class="ectt-1000"> write</span><span class="ectt-1000"> pending</span><span class="ectt-1000"> changes</span><span class="ectt-1000"> to</span><span class="ectt-1000"> storage.</span><br class="fancyvrb" /> <a id="x1-258036r18"></a><span class="ectt-1000">read-settings</span><br class="fancyvrb" /> <a id="x1-258038r19"></a><span class="ectt-1000">Read</span><span class="ectt-1000"> the</span><span class="ectt-1000"> last</span><span class="ectt-1000"> written</span><span class="ectt-1000"> settings,</span><span class="ectt-1000"> replacing</span><span class="ectt-1000"> current</span><span class="ectt-1000"> state</span><span class="ectt-1000"> in</span><span class="ectt-1000"> RAM.</span><br class="fancyvrb" /> <a id="x1-258040r20"></a><span class="ectt-1000">options:</span><br class="fancyvrb" /> <a id="x1-258042r21"></a><span class="ectt-1000">&lt;PACKAGE&gt;</span><span class="ectt-1000"> an</span><span class="ectt-1000"> Android</span><span class="ectt-1000"> package</span><span class="ectt-1000"> name</span><span class="ectt-1000"> or</span><span class="ectt-1000"> its</span><span class="ectt-1000"> UID</span><span class="ectt-1000"> if</span><span class="ectt-1000"> prefixed</span><span class="ectt-1000"> by</span><span class="ectt-1000"> --uid</span><br class="fancyvrb" /> <a id="x1-258044r22"></a><span class="ectt-1000">&lt;OP&gt;</span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> an</span><span class="ectt-1000"> AppOps</span><span class="ectt-1000"> operation.</span><br class="fancyvrb" /> <a id="x1-258046r23"></a><span class="ectt-1000">&lt;MODE&gt;</span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> </span><span class="ectt-1000"> one</span><span class="ectt-1000"> of</span><span class="ectt-1000"> allow,</span><span class="ectt-1000"> ignore,</span><span class="ectt-1000"> deny,</span><span class="ectt-1000"> or</span><span class="ectt-1000"> default</span><br class="fancyvrb" /> <a id="x1-258048r24"></a><span class="ectt-1000">&lt;USER_ID&gt;</span><span class="ectt-1000"> the</span><span class="ectt-1000"> user</span><span class="ectt-1000"> id</span><span class="ectt-1000"> under</span><span class="ectt-1000"> which</span><span class="ectt-1000"> the</span><span class="ectt-1000"> package</span><span class="ectt-1000"> is</span><span class="ectt-1000"> installed.</span><span class="ectt-1000"> If</span><span class="ectt-1000"> --user</span><span class="ectt-1000"> is</span><span class="ectt-1000"> not</span><br class="fancyvrb" /> <a id="x1-258050r25"></a><span class="ectt-1000">specified,</span><span class="ectt-1000"> the</span><span class="ectt-1000"> current</span><span class="ectt-1000"> user</span><span class="ectt-1000"> is</span><span class="ectt-1000"> assumed.</span></div>
</main>
<div class="footnotes"><!--l. 41-->
<p class="noindent"><span class="footnote-mark"><a href="#fn1x1-bk" id="fn1x1"><sup class="textsuperscript">1</sup></a></span><span class="pplr8t-x-x-80">For distributing stable releases only</span> </p>
<p class="noindent"><span class="footnote-mark"><a href="#fn2x1-bk" id="fn2x1"><sup class="textsuperscript">2</sup></a></span><span class="pplr8t-x-x-80">For distributing pre-releases only</span> </p>
<p class="indent"><span class="footnote-mark"><a href="#fn3x1-bk" id="fn3x1"><sup class="textsuperscript">3</sup></a></span><span class="pplr8t-x-x-80">You can also address me as “Muntashir Akon”</span></p>
</div>
</body>
</html>
